2017-02-26 80 views
0

這是我SecondViewController類:當我按下RETURN鍵時,爲什麼我的鍵盤不會消失?

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 
    } 
} 

的2個功能(的touchesBegan和textFieldShouldReturn)工作完全在我的FisrtViewController和許多其他應用程序。

我不知道爲什麼在這種情況下,如果我點擊任何地方鍵盤消失,並且工作正常,但是當我按下返回鍵時,鍵盤不會消失。

我在XCode模擬器上測試了它,在我的iPhone 7和iPad Air 2上,這個問題在這3個iDevices上繼續發生。

N.B:我自願刪除了viewDidLoad和didReceiveMemoryWarning,因爲我沒有代碼進入這些函數。爲了

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

進入viewDidLoad()這個工作:

+0

在'textFieldShouldReturn'中也使用'self.view.endEditing(true)'。 –

+0

對不起,我嘗試用這行代碼,並沒有工作... – LiTHiUM2525

+1

你是否已經初始化了textfield的委託給自己?我沒有看到你的代碼 –

回答

2

您必須添加幾行代碼!現在它將您的類分配給textField的委託。很高興幫助!

+1

更好的是,由於OP使用插座,所以在Interface Builder中設置文本字段的委託。無需代碼。 – rmaddy

+0

它依賴於你的開發類型。有些人和我一樣,喜歡在代碼中使用該代表的代表和方法,而另一些人可能更喜歡拖放樣式。代碼具有處理以編程方式和通過代碼創建的文本字段的優勢,這就是我選擇它的原因。 –

+0

但非常有針對性的@rmaddy –

相關問題