detect/get notification if shift key (modifier-key

2019-03-30 15:14发布

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.

1条回答
不美不萌又怎样
2楼-- · 2019-03-30 16:00

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;
        }
    }
}  
查看更多
登录 后发表回答