0

У меня есть UITextField, который перемещает представление вверх/вниз, когда клавиатура перемещается в/из.iPad-клавиатура, UITextField, странное поведение

- (IBAction)moveUp; 
- (IBAction)moveDown; 

переместить вид вверх «Редактирование ли Begin» и вниз «Знали End On Exit» (который я нашел в какой-нить здесь в StackOverflow).

Однако изображение не перемещается вниз, когда нажата кнопка (внизу справа) «скрыть клавиатуру». Это, очевидно, отвечает на «Редактирование закончилось».

Странная вещь, если я подключить «Редактирование ли End» в MoveDown, метод MoveDown будет вызван 2x (и перемещается далеко вниз экрана!)
Если бы я тогда diconnect-Коннект «Знали End On Exit », вид не исчезает, нажав кнопку« возврат », как это было раньше.

Подумайте, что здесь не так?

// Стефан

ответ

0

Вместо использования «Редактирование ли Begin» и «Редактирование ли End на выходе», которые определяются UIControl, я предлагаю вам использовать назначить делегат для вашего текстового поля и использовать textFieldDidEndEditing: метод, определяемый протоколом UITextFieldDelegate. Я считаю, что это сгорит, когда захочешь.

+0

По-прежнему такое же странное поведение. Я просто решил его обходным путем. Я буду называть textFieldShouldReturn: ни с чем другим, кроме как уволить первого ответчика. Вся другая необходимая задача будет обрабатываться в textFieldDidEndEditing: так как это будет вызвано в любом случае. Однако textFieldShouldReturn: должен быть доступен! Не попытайтесь это понять. Теперь это работает. § $ "!! @ & !! – Stef

0

Убедитесь, что вы подключаетесь к «Закончено на выходе», а не «Редактирование конца сида». Эти имена немного запутывают.

1

Вместо того, чтобы связывать ваши методы для управления событиями в текстовом поле, вы должны запустить свой метод в ответ на два уведомления: UIKeyboardDidShowNotification и UIKeyboardDidHideNotification. Просто добавьте себя в качестве наблюдателя для этих уведомлений в -viewDidLoad и удалите себя в -viewDidUnload.

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter]; 
    [notificationCenter addObserver:self selector:@selector(moveUp) name:UIKeyboardDidShowNotification object:nil]; 
    [notificationCenter addObserver:self selector:@selector(moveDown) name:UIKeyboardDidHideNotification object:nil]; 
} 

- (void)viewDidUnload 
{ 
    NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter]; 
    [notificationCenter removeObserver:self name:UIKeyboardDidShowNotification object:nil]; 
    [notificationCenter removeObserver:self name:UIKeyboardDidHideNotification object:nil]; 
} 
Смежные вопросы