it-swarm.com.ru

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

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

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

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

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

55
Meroon

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

[textView becomeFirstResponder];
155
Alex Rozanski

Swift:

textView.becomeFirstResponder()
18
Esqarrouth

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

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

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

 [myTextView intoFirstResponder]; 

 [super viewWillAppear: animated]; 
} 
11
Erik
[textView becomeFirstResponder];
7
Corey Floyd

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

 override func viewDidLoad() {
    super.viewDidLoad()

textView.becomeFirstResponder()

}

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

0
user8851874