Как предотвратить переключение клавиатуры с цифр на алфавит при нажатии клавиши пробела? - PullRequest
5 голосов
/ 15 января 2010

У меня есть UITextFields в таблице для ввода значений. Некоторые из этих полей принимают только цифры. Я использую UIKeyboardTypeNumbersAndPunctuation для клавиатуры типа и shouldChangeCharactersInRange для фильтрации символов.

Также все исправления отключены:

textField.keyboardType = UIKeyboardTypeNumbersAndPunctuation;
textField.autocorrectionType =  UITextAutocorrectionTypeNo;
textField.autocapitalizationType =  UITextAutocapitalizationTypeNone;

В полях только с цифрами при касании клавиши пробела клавиатура меняется на Алфавит. Я знаю, что это поведение по умолчанию. Я хочу игнорировать клавишу пробела и не хочу менять тип клавиатуры.

Есть ли способ изменить это поведение по умолчанию?

PS: другие типы цифровых клавиатур не предусмотрены. Мне нужна пунктуация!

Спасибо

1 Ответ

4 голосов
/ 15 января 2010

Не думаю, что можно изменить поведение клавиатуры.

Однако вы можете реализовать textField: shouldChangeCharactersInRange: replaceString: из протокола UITextFieldDelegate для перехвата пробела (и апострофа), как это, и похоже, что он работает:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    if ([string isEqualToString:@" "] || [string isEqualToString:@"'"]) {
        NSMutableString *updatedString = [NSMutableString stringWithString:textField.text];
        [updatedString insertString:string atIndex:range.location];
        textField.text = updatedString;
        return NO;
    } else {
        return YES;
    }
}
...