2016-03-24 56 views
0

我看到這個問題到處都是百萬次,但沒有一個答案一直在爲我工作。如何從UITextField刪除焦點?

我需要從UITextField刪除焦點。這意味着我需要光標消失(並且鍵盤消失)。

我已經看到了互聯網上的解決方法是,[textfield resignFirstResponder][textfield endEditing:YES],這是能夠隱藏鍵盤,但不會從刪除的UITextField焦點(即光標仍給出UITextField內愉快地閃爍,雖然鍵盤駁回)。

這個事情是我需要得到事件,當用戶點擊到UITextField和事件didBeginEditing被解僱。每當事件被觸發時,或者更一般地說,每當用戶點擊UITextField時,我都會做一些事情。但是如果焦點沒有完全從UITextField中移除,那麼即使在我調用resignFirstResponderendEditing:YES後,該事件也不能再次被觸發。

我該如何做到這一點?謝謝。

+2

嘗試讓別的東西成爲第一響應者,也許只是視圖控制器的基本視圖 – Fonix

+0

您的鍵盤已經退出並且只有光標可用 –

+0

@Fonix我已經嘗試將textfield.superView設置爲firstresponder,但它沒有'幫助。另一個指南告訴我需要將firstresponder設置爲另一個文本字段。但我沒有任何其他文本框。屏幕上只有一個文本框和其他組件,但其他組件除了文本框外,沒有其他組件可以成爲第一響應者。 –

回答

1

可以使cusor顏色,清晰的彩色

textfeild.tintColor = UIColor.clearColor() 

,如果你只是想取消鍵盤則

textfeild.resignFirstResponder() 

將取消鍵盤,當你想專注再次使用

textfeild.becomeFirstResponder() 
+0

它沒有幫助,因爲我不想只是解僱鍵盤。我希望textfield也能消除焦點。將光標設置爲清除顏色也沒有幫助,因爲光標仍然在那裏。如果文本字段仍處於焦點狀態,則變爲FirstResponder也不會觸發didBeginEditing事件。我需要在用戶點擊文本框時觸發didBeginEditing事件,但如果我無法讓文本框失去焦點,則無法再次觸發事件。 –

+0

- (BOOL)textFieldShouldReturn :(UITextField *)textField {textField resignFirstResponder]; 返回YES; }試試這個我的情況下,cusor沒有出現,也設置代表自己 –

0

如果您只需要檢測何時觸摸了文本字段,而不是專門查找didBeginEditing,爲什麼不只是做的UITextField的一個子類,並覆蓋touchesBegan像這樣

class SpecialTextField: UITextField { 
    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { 
     print("touched textfield") 
    } 
} 

那麼你可以使用它通過委託方法火的事件,或直接以某種方式

0

我有同樣的問題很久以前。

我有包含UITextField的屏幕,和其他一些控制,其中一些屏幕鍵盤下出現(是的,我現在知道我應該已經使用限制,以確保屏幕UIView裝可見部分的屏幕)。

在我的情況的問題是,一個模式屏幕上,一旦出現屏幕鍵盤,你可以永遠擺脫它,即使你嘗試使用resignFirstResponder。蘋果以這種方式故意設計它,以阻止用戶因鍵盤出現而煩惱,並且消失。嗯。

我的解決辦法很簡單:

讓您UITextField禁用。即使只是幾分之一秒,然後你重新啓用它。

這將使屏幕鍵盤很好地滑開。