如果在uitextview中按下shift键(修饰键),则检测/获取通知

时间:2011-04-06 01:46:59

标签: uitextview uikeyboard shift modifier-key

我试图找出是否有任何方法可以检测是否按下了 shift 键,或者当按下 shift 键时是否发送了任何通知在UIKeyboard

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

不会被调用 shift 按键,因为它是一个修饰键。

1 个答案:

答案 0 :(得分:2)

不知道您是否需要与其他文本结合使用或仅检测单班次点击,但这是我检测前者的解决方案:

在我的情况下,这只是一个字符:

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

将大写文本转换为小写并设置shiftPressed Value(如果文本是非字母文本则忽略)

//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;
        }
    }
}