Как программно настроить фокус UITextView?
Итак, я хочу создать контроллер модального представления, в котором есть UITextView, и я хочу, чтобы клавиатура автоматически всплывала, а UITextView имеет фокус.
Я нашел способ сделать это, выполнив следующие действия:
textView.editable = YES;
textView.editable = NO;
Это просто кажется мне взломанным, есть ли другой способ?
Ответы
Ответ 1
Так как UITextView
наследует от UIResponder
(косвенно, он наследует от UIScrollView
, который наследует от UIView
, который затем наследует от UIResponder
), вы можете вызвать метод -becomeFirstResponder
в своем текстовом поле, который заставит его стать первым ответчиком и начнет редактирование:
[textView becomeFirstResponder];
Ответ 2
Swift:
textView.becomeFirstResponder()
Ответ 3
Это выглядит несколько хакерским.
Терминология Cocoa Touch для "с фокусом" - это "первый ответчик", а UITextView
будет отображать свои клавиатуры, когда они будут первым ответчиком. Я могу придумать несколько методов, чтобы UITextView стал первым ответчиком, но самым легким, вероятно, является ваш метод управления viewWillAppear или viewDidAppear:
- (void)viewWillAppear:(BOOL)animated
{
[myTextView becomeFirstResponder];
[super viewWillAppear:animated];
}
Ответ 4
[textView becomeFirstResponder];
Ответ 5
Если вы хотите, чтобы фокус был таким конкретным TextView при загрузке ViewController, вы можете поместить textView.becomeFirstResponder() в функцию OverDend ViewDidLoad, как показано ниже:
override func viewDidLoad() {
super.viewDidLoad()
textView.becomeFirstResponder()
}
Я считаю, что это работает без ошибок