клавиатура iPad, UITextField, странное поведение - PullRequest
0 голосов
/ 07 ноября 2010

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

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

Я перемещаю вид вверх, используя «Редактирование начала», а вниз - «Конец завершения».На выходе »(который я нашел в какой-то теме здесь, в StackOverflow).

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

Странно то, что если я также подключу «Editing Did End» к moveDown, метод moveDown будет вызван 2 раза (и переместится на дальний экран внизу!)End On Exit ", вид не исчезает при нажатии на кнопку возврата, как это было раньше.

Есть идеи, что здесь не так?

// Стефан

Ответы [ 3 ]

1 голос
/ 11 января 2012

Вместо того, чтобы соединять ваши методы для управления событиями в текстовом поле, вы должны запустить свой метод в ответ на два уведомления, 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];
}
0 голосов
/ 11 января 2012

Убедитесь, что вы подключаетесь к «Did End On Exit», а не к «Editing Sid End». Эти имена немного сбивают с толку.

0 голосов
/ 08 ноября 2010

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

...