2009-06-12 33 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() 

} 

我覺得這個作品沒有任何錯誤

相關問題