我正在尝试找出是否有任何方法可以检测到 shift 键是否被按下,或者当在 UIKeyboard
中按下 shift 键时是否发送任何通知。
- (BOOL) textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)string
由于shift键是一个修改键,因此不会调用它。
我正在尝试找出是否有任何方法可以检测到 shift 键是否被按下,或者当在 UIKeyboard
中按下 shift 键时是否发送任何通知。
- (BOOL) textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)string
不确定您是需要将其与其他文本结合起来使用还是仅检测单个移位键,但这是我检测前者的解决方案:
在我的情况下,这只是一个字符:
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)inText
这将大写文本转换为小写,并设置shiftPressed值(如果文本不是字母文本,则忽略)
//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;
}
}
}
pressesBegan
: 来实现:https://dev59.com/UXgPtIcB2Jgan1znXWcs#73284986 - McKinley