Как мне дать фокус UITextView программно? - PullRequest
56 голосов
/ 12 июня 2009

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

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

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

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

Ответы [ 5 ]

156 голосов
/ 12 июня 2009

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

[textView becomeFirstResponder];
18 голосов
/ 01 августа 2015

Swift:

textView.becomeFirstResponder()
11 голосов
/ 12 июня 2009

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

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

- (void)viewWillAppear:(BOOL)animated
{

    [myTextView becomeFirstResponder];

    [super viewWillAppear:animated];
}
7 голосов
/ 13 июня 2009
[textView becomeFirstResponder];
0 голосов
/ 20 ноября 2017

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

 override func viewDidLoad() {
    super.viewDidLoad()

textView.becomeFirstResponder()

}

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

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