Почему кнопка очистки UITextField не работает в iOS 5 WeeApp? - PullRequest
2 голосов
/ 17 февраля 2012

Я делаю weeapp для центра уведомлений, используя iOSOpenDev.У меня UITextField на UIView и я реализовал протокол UITextFieldDelegate.

Моя проблема в том, что метод textFieldShouldClear никогда не вызывается при нажатии кнопки очистки в UITextField.Другие методы интерфейса, такие как shouldChangeCharactersInRange и textFieldShouldReturn, вызываются без проблем.

Есть идеи, почему метод интерфейса никогда не вызывается?

Ответы [ 3 ]

1 голос
/ 17 июля 2013

У меня была эта проблема, когда я отклонял клавиатуру, когда пользователь нажимал в другом месте экрана.У меня был распознаватель жестов, который искал касания, и при обнаружении касания он вызывал resignFirstResponder для текстового поля.К сожалению, это ломает кнопку очистки.

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

// In: - (void)handleTap:(UITapGestureRecognizer *)sender {
// The user tapped outside a text field, drop the keyboard.
// Unfortunately this normally breaks the clear button, so we'll check that the
// tap is outside the table view (and therefore not on a clear button).
BOOL inButton = CGRectContainsPoint(self.signInButton.bounds, [sender locationInView:self.signInButton]);
BOOL inTable = CGRectContainsPoint(self.tableView.bounds, [sender locationInView:self.tableView]);
if (!inTable && !inButton ) {

    BOOL didEndEditing = [self.view endEditing:NO];

    // But... if we were editing a field (& therefore the keyboard is showing),
    // and if they tapped the sign in button, sign in. Not sure where the
    // onSignIn event is getting lost. The button does highlight. But the
    // call to endEditing seems to eat it.
    if (didEndEditing && inButton) {
        [self onSignIn:self.signInButton];
    }
}
0 голосов
/ 26 июля 2013

Следуя ответу Грэма Перкса, я изменил свой вызов resignFirstResponder на:

[self.focusInput performSelector: @selector(resignFirstResponder)
                      withObject: nil
                      afterDelay: 0.2f];

Теперь клавиатура автоматически скрывается на нажатиях по назначению, но функциональность кнопки очистки возвращается.

0 голосов
/ 20 февраля 2012

Убедитесь, что делегатом текстового поля является self:

theTextField.delegate = self;

Я слышал, что UIActionSheet засасывает протокол UITextFieldDelegate, и центр уведомлений может делать то же самое ...

...