Невозможно перезапуститьFirstResponder с UITextView - PullRequest
4 голосов
/ 03 июня 2010

У меня есть UITextView.Я реализовал панель навигации UIBarButtonItem, чтобы реагировать на прикосновения и отказался от первого отклика для моего UITextView.

Но, когда вызывается метод селектора, клавиатура не закрывается.Я проверил состояние респондента UITextView с помощью isFirstResponder, и он возвращает ДА.Я также проверил это с canResignFirstResponder, и возвращаемое значение НЕТ.

Я должен что-то здесь упустить ... почему он возвращает NO?

Я понимаю, что могу переопределить canResignFirstResponder, создав подкласс UITextView, но я бы хотел этого избежать, если это возможно.

Вот фрагмент кода:

- (void) commentCancelButtonTouched:(id)sender
{
    NSLog(@"Cancel button touched");
    [self.navigationBar popNavigationItemAnimated: NO];

    if ([self.textInput.textView canResignFirstResponder] == NO) {
        NSLog(@"I don't want to resign!");
    }

    [self.textInput.textView resignFirstResponder];
}

Ответы [ 3 ]

5 голосов
/ 07 декабря 2010

На всякий случай, если кто-то захочет спрятать клавиатуру при касании за пределами текстового представления, это довольно просто ...

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    [super touchesBegan:touches withEvent:event];

    [self.xFront resignFirstResponder];
}

xFront - мой выход к моим UITextView.

3 голосов
/ 03 июня 2010

Адресация вашего UITextField с помощью подкласса UIView немного нестандартна. Если бы я был тобой, я бы получил прямое управление этим UITextField прямо из твоего контроллера представления. Установите его как синтезированное свойство вашего контроллера представления, присвойте ему ключевое слово IBOutlet, чтобы вы могли поговорить об этом в Interface Builder, а затем убедитесь, что выход подключен к текстовому полю.

Другими словами, вместо того, чтобы говорить о self.textInput.textView, вы хотите говорить о self.textView напрямую. И еще раз проверьте подключение к выходу IB, потому что я подозреваю, что в этом-то и проблема.

1 голос
/ 03 июня 2010

Я понял это. У меня был метод 'UITextViewDelegate' в моем представлении 'textInput', textViewShouldEndEditing, который был переопределен для возврата NO. Изменил его на YES, и это решило проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...