2016-05-26 23 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 
     } 
相关问题