обнаружение числового режима клавиатуры iphone - PullRequest
0 голосов
/ 24 июня 2011

Можно ли определить, когда пользователь нажимает кнопку 123 на клавиатуре и переходит на цифровую клавиатуру?Я хотел бы отобразить inputaccessoryview только тогда, когда клавиатура находится в числовом режиме, а не когда она находится в режиме альфа.

Спасибо!

1 Ответ

0 голосов
/ 24 июня 2011

В данный момент я далеко от своего Mac, так что это все лучшее предположение, но ...

UITextField и UITextView оба реализуют протокол UITextInputTraits, означая, что они оба имеют свойство keyboardType.Следовательно, вы должны иметь возможность добавить наблюдателя к этому свойству, и, когда оно изменится, протестируйте изменение, чтобы увидеть, является ли его новый тип UIKeyboardTypeNumbersAndPunctuation.

Попробуйте:

// In your header
@property (nonatomic, retain) IBOutlet UITextField *textField

// In your init or viewDidLoad function
[textField addObserver:self forKeyPath:@"keyboardType" options:NSKeyValueObservingOptionNew context:nil]

// Somewhere in your class add the following
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
    if (textfield.keyboardType == UIKeyboardTypeNumbersAndPunctuation) {
        // This is where you'd add your accessoryView
    } else {
        // And this is where you'd remove it when the keyboardType changes to 
        // anything other than UIKeyboardTypeNumbersAndPunctuation
    }
}
...