я не запустить тест с UITableView
но я попытался установить UIToolbar
в качестве дополнительного вида входа в textfield:shouldChangeCharactersInRange:replacementString:
, и это было успешно. Вам понадобится флаг, который отслеживает, отображается ли вид аксессуара или нет, поэтому вы не запускаете код настройки более одного раза. Существование входного аксессуара проверяется только тогда, когда клавиатура должна быть представлена так, что вам нужно сделать танец, где вы уходите в отставку, а затем становитесь первым ответчиком. Кроме того, для того, чтобы вид вспомогательного устройства ввода отображался сразу после первого нажатия клавиши, вам необходимо повторно отобразить текстовое поле.
- (BOOL)textField:(UITextField *)textField
shouldChangeCharactersInRange:(NSRange)range
replacementString:(NSString *)string
{
if (!self.accessoryViewDisplayed) {
self.accessoryViewDisplayed = YES;
UIToolbar *toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
toolbar.translucent = NO;
toolbar.barTintColor = [UIColor greenColor];
textField.inputAccessoryView = toolbar;
[textField resignFirstResponder];
[textField becomeFirstResponder];
[textField setNeedsDisplay];
}
return YES;
}
Update
Подумав об этом дальше, вы можете настроить свой вход вид аксессуар в viewDidLoad
и установите hidden
в YES
. Затем в методе делегата текстового поля вы можете просто установить флаг и отобразить вид вспомогательного входа, не требуя отставки/перехода на первый ответный танец.
Вместо использования 'shouldChangeCharactersInRange' вы можете использовать собственный метод textFieldDidChange:', если он соответствует вашей цели. См. Мой ответ [ЗДЕСЬ] (http://stackoverflow.com/questions/25215742/to-enable-button-if-all-the-textfields-are-filled-in-ios/25216056#25216056), чтобы узнать, как вы можете , – n00bProgrammer
@ n00bProgrammer textFieldDidChange: метод по-прежнему не показывает AccessoryView. Он вводит оператор if, когда пользователь вводит, но AccessoryView не показывает ... –