2017-04-12 28 views
0

由文本字段觸發的鍵盤環境:Xcode的版本8.2(8C38)/夫特3.0隱藏經由resignFirstResponder

在視圖textFiled目的是導線高達在經由IBAction爲控制器命名textFieldReturn方法。相關的代碼顯示爲遵循

class ViewController: UIViewController { 
    override func viewDidLoad() { 
     super.viewDidLoad() 
    } 

@IBAction func textFieldReturn(_ sender: Any) { 
     _ = (sender as AnyObject).resignFirstResponder() 
    } 

} 

我期待什麼

當我打了虛擬鍵盤的返回鍵的功能textFieldReturn(_ :)將被調用,鍵盤會隱藏

問題觀察家

函數沒有被稱爲AF之三我拍了拍返回鍵,鍵盤仍然存在

資源

此代碼尖晶石,通過尼爾來自書的iOS 10應用開發綱要的第16章的例子Symth (PP-114)

此代碼與原始的代碼之間唯一的區別是該函數的參數(發送者)的類型。這是AnyObject在原來的書,而我有任何默認情況下,所以我投來AnyObject的函數體問題內

它似乎是一個體面的書,但樣本代碼不爲我工作。我怎樣才能調用resignFirstResponder()方法時,我打回車鍵


另類嘗試

而不是使用IBAction爲的,我轉委託的想法,我「VE設定VeiwController作爲文本字段的代表

class ViewController: UIViewController, UITextFieldDelegate { 

    @IBOutlet weak var tempText: UITextField! //reference the TextField as the variable **tempText** in the controller 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     self.tempText.delegate = self //set up the delegation 
    } 

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

問題

替代解決方案仍然無法正常工作。

感謝您的時間和幫助

回答

1

你爲什麼不使用的UITextField原委託功能在您的viewDidLoad以下?

我覺得默認的功能將工作,只要你想:

class ViewController: UIViewController, UITextFieldDelegate { 

    @IBOutlet weak var tempText: UITextField! //reference the TextField as the variable **tempText** in the controller 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     self.tempText.delegate = self //set up the delegation 
    } 

    func textFieldShouldReturn(_ textField: UITextField) -> Bool{ 
     textField.resignFirstResponder() 

     return false 
    } 
} 
+0

因此,有一個原來的委託功能,感謝這麼多,我不知道有一個默認的功能爲此,非常感謝。 – SLN

+0

但是爲什麼使用IBAction方式的第一個不工作? – SLN

+0

每當按下鍵盤的返回鍵時,函數textFieldShouldReturn總是被調用。所以沒有其他方法可行。 –

1

這個替換您textFieldReturn方法,它應該只是罰款。

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

請一定要保持()

self.tempText.delegate = self 
+0

textFieldShouldReturn做的作品,非常感謝 – SLN