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