2009-06-12 36 views
51

所以我想引入一个模态视图控制器,它有一个UITextView,并且我想让键盘自动弹出并且UITextView有焦点。如何以编程方式提供UITextView焦点?

我找到了一种方法做来完成这项以下几点:

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

这似乎只是哈克对我来说,有另一种方式?

回答

147

因为从UIResponder(间接,它实际上是从UIScrollView继承,从UIView继承其然后从UIResponder继承),你可以叫你的文本字段的-becomeFirstResponder方法,这将导致其成为第一个响应UITextView继承并开始编辑:

[textView becomeFirstResponder]; 
11

这似乎有点hackish。

'有焦点'的Cocoa Touch术语是'first responder',UITextView s会在他们是第一响应者时显示他们的键盘。我能想到的几种技术,使的UITextView成为第一个响应者,但最简单的可能是在您的视图控制器viewWillAppear中或viewDidAppear方法:

 
- (void)viewWillAppear:(BOOL)animated 
{ 

    [myTextView becomeFirstResponder]; 

    [super viewWillAppear:animated]; 
} 
+0

viewDidAppear为我工作,但不viewWillAppear。想知道为什么... – 2015-10-20 20:01:05

7
[textView becomeFirstResponder]; 
13

斯威夫特:

textView.becomeFirstResponder() 
0

当你希望焦点成为加载ViewController时特定的TextView,您可以将ViewView加载函数中的textView.becomeFirstResponder()覆盖如下函数:

override func viewDidLoad() { 
    super.viewDidLoad() 

textView.becomeFirstResponder() 

} 

我觉得这个作品没有任何错误

相关问题