簡體   English   中英

為什么按RETURN鍵時鍵盤沒有消失?

[英]Why isn't my keyboard disappearing when I press the RETURN key?

這是我的SecondViewController類:

class SecondViewController: UIViewController, UITextFieldDelegate {

@IBOutlet weak var txtNewItem: UITextField!
@IBOutlet weak var lblResult: UILabel!
@IBAction func btnAddNewItem(_ sender: Any) {
    let itemsObject = UserDefaults.standard.object(forKey: "items")
    var items:[String]

    if let tmpItem = itemsObject as? [String] {
        if txtNewItem.text == "" {
            //Alert message if empty txtNewItem is ""            
        } else {
            items = tmpItem
            items.append(txtNewItem.text!)
            UserDefaults.standard.set(items, forKey: "items")
        }
    } else {
        items = [txtNewItem.text!]
        UserDefaults.standard.set(items, forKey: "items")
    }
    txtNewItem.text = ""
}

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    self.view.endEditing(true)
}

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

這兩個函數(touchesBegan和textFieldShouldReturn)可以完美地在我的FisrtViewController和許多其他應用中使用。

我不知道為什么在這種情況下,如果我在任何地方單擊,鍵盤都會消失並且可以正常工作,但是當我按回車鍵時,鍵盤不會消失。

我在XCode模擬器上以及在iPhone 7和iPad Air 2上進行了測試,在這3台iDevice上問題仍然存在。

注意:我自願刪除了viewDidLoad和didReceiveMemoryWarning,因為我沒有這些函數的代碼。

您必須添加以下代碼行:

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

進入viewDidLoad()以使其正常工作! 現在,它將您的類分配給textField的委托。 很高興它有所幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM