Как мне дать фокус UITextView программно?

ios objective-c cocoa-touch uikit

47895 просмотра

5 ответа

1998 Репутация автора

Поэтому я хочу добавить модальный контроллер вида, в котором есть UITextView, и я хочу, чтобы клавиатура автоматически всплывала, а UITextView фокусировался.

Я нашел способ сделать это, сделав следующее:

textView.editable = YES;
textView.editable = NO;

Это просто кажется мне вздорным, есть ли другой способ?

Автор: Meroon Источник Размещён: 12.06.2009 05:33

Ответы (5)


157 плюса

36331 Репутация автора

Решение

Поскольку UITextViewнаследуется от UIResponder(косвенно, на самом деле наследует от UIScrollView, который наследует, от UIViewкоторого потом наследует UIResponder), вы можете вызвать -becomeFirstResponderметод в своем текстовом поле, что заставит его стать первым респондентом и начать редактирование:

[textView becomeFirstResponder];
Автор: Alex Rozanski Размещён: 12.06.2009 06:03

11 плюса

832 Репутация автора

Это кажется несколько хакерским.

Терминология Cocoa Touch для «иметь фокус» - «первый респондент», и UITextViews будет отображать свои клавиатуры, когда они первый респондент. Я могу придумать несколько методов, чтобы UITextView стал первым респондентом, но самый простой из них, вероятно, в методах viewWillAppear или viewDidAppear контроллера представления:

- (void) viewWillAppear: (BOOL) анимированный
{

    [myTextView intoFirstResponder];

    [super viewWillAppear: анимированный];
}
Автор: Erik Размещён: 12.06.2009 06:06

7 плюса

21106 Репутация автора

[textView becomeFirstResponder];
Автор: Corey Floyd Размещён: 12.06.2009 09:02

19 плюса

27724 Репутация автора

Swift:

textView.becomeFirstResponder()
Автор: Esqarrouth Размещён: 01.08.2015 01:19

0 плюса

0 Репутация автора

Если вы хотите, чтобы фокус был именно этим TextView при загрузке ViewController, вы можете поместить textView.becomeFirstResponder () в функцию переопределения ViewDidLoad, как показано ниже:

 override func viewDidLoad() {
    super.viewDidLoad()

textView.becomeFirstResponder()

}

Я считаю, что это работает без каких-либо ошибок

Автор: user8851874 Размещён: 20.11.2017 03:59
Вопросы из категории :
32x32