2017-01-08 77 views
3

試圖隱瞞了iOS鍵盤時,返回鍵被擊中,而是它會暫停,並讓我在圖像中看到的錯誤。下面是我使用的代碼:如何隱藏鍵盤時,返回鍵擊 - 斯威夫特

@IBOutlet weak var scoreText: UITextField! 

func textFieldShouldReturn(_ scoreText: UITextField) -> Bool { 
    self.view.endEditing(true) 
    return false 
} 

enter image description here

回答

9

你的問題是,你沒有爲了使用該方法委託一個文本框。首先,你的類必須包含UITextFieldDelegate協議:

class yourClass: UIViewController, UITextFieldDelegate{ ... } 

而且在viewDidLoad添加此還有:

scoreText.delegate = self 

然後,你必須改變這一點:

func textFieldShouldReturn(_ scoreText: UITextField) -> Bool { 
    self.view.endEditing(true) 
    return false 
} 

這樣:

func textFieldShouldReturn(_ scoreText: UITextField) -> Bool { 
    self.view.endEditing(true) 
    return true 
} 

最終代碼:

class yourClass: UIViewController, UITextFieldDelegate{ 

@IBOutlet weak var scoreText: UITextField! 

override func viewDidLoad(){ 
    super.viewDidLoad() 
    scoreText.delegate = self 
} 

func textFieldShouldReturn(_ scoreText: UITextField) -> Bool { 
    self.view.endEditing() 
    return true 
} 

如果不工作,問題是不是textFieldShouldReturn功能。請檢查您的插座連接。

+0

錯誤這是所有你必須爲了做它的工作 –

+0

有這個問題:http://i.imgur.com /PAWVdrb.png順便說一下,爲什麼我需要委託TextField而不是標籤,按鈕等? – stevetheipad

+0

@stevetheipad 1 - 因爲** textFieldShouldReturn **函數包含在** UITextFieldDelegate **中; 2 - 嘗試添加你的論點:** self.view.endEditing(真)**,我可能已經錯過了,在我的答案 –

0

試試這個

func textFieldShouldReturn(_ textField: UITextField) -> Bool { 
    textField.resignFirstResponder() 
    return true 
} 
+0

沒有運氣,同樣的問題。 – stevetheipad

+0

@stevetheipad您是否已將視圖控制器設置爲遵循UITextField委託? – Mochi

+0

對不起,你的意思是一個IBOutlet?如果是這樣,是的我添加了一個UITextField。 – stevetheipad