Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

detect/get notification if shift key (modifier-key) pressed in uitextview

I'm trying to figure out if there is any way in which we can detect if shift key is pressed or if any notification is sent when shift key is pressed in UIKeyboard

- (BOOL) textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)string

does not get called for shift key press since it is a modifier key.

like image 840
dips Avatar asked Nov 06 '22 00:11

dips


1 Answers

Don't know whether you need to know it in combination with other text or only detect the single shift tap, but here is my solution for detecting the former:

in my case this is only a single character within:

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)inText

this converts uppercase text to lowercase and sets the shiftPressed Value (ignored if the text is non letter text)

//Shift Detection
BOOL shiftPressed = NO;

//Detect non letter characters
NSCharacterSet *letterCharacterSet = [NSCharacterSet letterCharacterSet];
NSString *trimmedText = [text stringByTrimmingCharactersInSet:letterCharacterSet];

if ([text length] == 1) {  
    if (![trimmedText length]) 
    {            
        NSString *upperCaseString = [text uppercaseString];
        if ([upperCaseString isEqualToString:text]) {
            NSString *lowerCaseString = [text lowercaseString];
            text = lowerCaseString;
            shiftPressed = YES;
        }
    }
}  
like image 116
b00tsy Avatar answered Nov 14 '22 22:11

b00tsy