我试图找出是否有任何方法可以检测是否按下了 shift 键,或者当按下 shift 键时是否发送了任何通知在UIKeyboard
- (BOOL) textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)string
不会被调用 shift 按键,因为它是一个修饰键。
答案 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;
}
}
}