обнаружить/получить уведомление, если клавиша Shift (клавиша-модификатор) нажата в uitextview

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

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

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


person dips    schedule 06.04.2011    source источник


Ответы (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;
        }
    }
}  
person b00tsy    schedule 16.02.2012