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

标签 uitextview uikeyboard shift modifier-key

我想弄清楚是否有任何方法可以检测是否按下了 shift 键,或者在 UIKeyboard 中按下 shift 键时是否发送任何通知

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

不会被要求按下 shift 键,因为它是一个修饰键。

最佳答案

不知道你是否需要结合其他文本来了解它还是只检测单次点击,但这是我检测前者的解决方案:

就我而言,这只是其中的一个字符:

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

关于uitextview - 如果在 uitextview 中按下 shift 键(修饰键),则检测/获取通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5560630/

相关文章:

python - 将非空单元格移到分组列 pandas 的左侧

javascript - 事件 Shift 键组合

ios - 向 UITextView 添加轮廓/描边

ios - 如何防止像UITextView一样截断文本?

html - 在 native iOS 应用程序中编辑 HTML 内容

objective-c - keyboardDidShow 和 keyboardWillShow 的区别

ios - 在 Swift 4 中设置 textView.typingAttributes 前景色

ios - 如何同时设置keyboardAppearance和inputView?.backgroundColor为dark?

iOS - 如何关闭键盘?

c - 在 C 中,将 (char) 0xFF 左移 8 位并将其转换为 int