2016-05-26 73 views
3

我非常抱歉發佈此信息,因爲它已被問及一百萬次,但每當我嘗試使用其中一種解決方案時,它都是過時的,或者不適用於我的代碼。 (或者我只是做錯了)resign first responder UITextfield

我有5個textfields和textview,進入一個電子郵件,我試圖儘量減少鍵盤時,即時通訊完成,但我不知道如何。 我也試圖讓它進入下一個文本字段,直到最後一個,但不需要完成。

我很新btw。所以PLZ是非常具體:d

代碼:

func textView(textView: UITextView, shouldChangeTextInRange: NSRange, replacementText text: String) -> Bool { 
    if text == "\n" { 
     text6.resignFirstResponder() 
     return false 
    } 
    return true 
} 
func textFieldShouldReturn(textField: UITextField) -> Bool { 

    if textField == self.text1 { 
     self.text2.becomeFirstResponder() 
    } 
    else if textField == self.text2 { 
     self.text3.becomeFirstResponder() 
    } 
    else if textField == self.text3 { 
     self.text4.becomeFirstResponder() 
    } 

    else if textField == self.text4 { 
     self.text5.becomeFirstResponder() 
     self.text5.resignFirstResponder(); 
    } 

    return true; 
} 
+0

豈不是更好地檢查每個字段都有一些非零長度的內容,當他們做的辭職呢?你也可以把一個完成按鈕放在鍵盤的頂部... – Wain

+0

你設置的委託方法? HTTP://計算器。com/questions/11553396/how-to-add-an-action-on-uitextfield-return-key –

回答

4

首先你要添加UITextFieldDelegate在.H

然後.M

yourtextfield.delegate = self 

然後使用這個代碼

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

這將做的工作

self.view.endEditing(true) 
+0

我應該在哪裏粘貼? :) –

+0

使用它而不是resignFirstResponder當你需要隱藏鍵盤 – user3237732

4

@Peter Boesen:

要完成時,最小化的鍵盤。即當按下「返回」鍵......你需要X2東西在代碼的主要部分作出評論之前...

  1. 在頂部視圖控制器(代碼),你必須class ViewController: UIViewController - 加UITextFieldDelegate。所以最終它應該看起來像:

    class ViewController: UIViewController, UITextFieldDelegate

  2. 在同一個視圖控制器(代碼)在FUNC

    viewDidLoad添加 self.textField.delegate = self

然後......由「Abhinandan提到Pratap',加入下面的代碼來控制KeyBoard在按'Return'時的行爲:

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

然而,如果你想在屏幕上的其他地方攻絲,以儘量減少鍵盤,對自己下面將通過使用「的touchesBegan」就夠了(前提是你不使用滾動視圖)如果您使用滾動視圖

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

對於屏幕,您需要將self.view.endEditing(true)UITapGesture一起使用,以便在關閉鍵盤之外進行敲擊。

+0

非常感謝你,這工作完美!並非常感謝你解釋它如此詳細,它創造了奇蹟! :D我不知道該給誰正確的答案,但既然是「Abhinandan Pratap」,先寫代碼給了他,但是謝謝你! :) –

0

首先你要確認UITextFieldDelegate

func textFieldShouldReturn(textField: UITextField) -> Bool 
     { 
      textField.resignFirstResponder() 
      return true 
     } 
相關問題