5

キーが押されたかどうか、またはキーが押さshiftれたときに通知が送信されたかどうかを検出できる方法があるかどうかを把握しようとしていますshiftUIKeyboard

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

shift修飾キーであるため、キーを押しても呼び出されません。

4

1 に答える 1

2

他のテキストと組み合わせて知る必要があるのか​​ 、それとも単一のシフトタップのみを検出する必要があるのか​​ はわかりませんが、前者を検出するための私の解決策は次のとおりです。

私の場合、これは以下の 1 文字のみです。

- (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;
        }
    }
}  
于 2012-02-16T21:24:01.287 に答える