обнаружение / получение уведомления, если клавиша Shift (клавиша-модификатор) нажата в uitextview - PullRequest
4 голосов
/ 06 апреля 2011

Я пытаюсь выяснить, можно ли каким-то образом определить, нажата ли клавиша shift , или отправлено ли уведомление при нажатии клавиши shift в UIKeyboard

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

не вызывается для shift нажатия клавиши, так как это клавиша-модификатор.

1 Ответ

2 голосов
/ 17 февраля 2012

Не знаю, нужно ли вам знать это в сочетании с другим текстом или обнаруживать только однократное нажатие, но вот мое решение для обнаружения первого:

в моем случае это только одинсимвол внутри:

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