辞职第一响应者UITextfield

时间:2016-05-26 11:44:40

标签: ios swift resignfirstresponder

我很抱歉发布这个,因为它被问过一百万次,但每当我尝试使用其中一个解决方案时,它就会过时,或者不能使用我的代码。 (或者我可能只是做错了)

我有5个文本字段和一个textview,进入电子邮件,我正在尝试尽量减少键盘,但我不知道如何。 我也尝试将它转到下一个文本字段,直到最后一个,但不需要这样做。

我很新btw。所以请特别注意: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;
}

5 个答案:

答案 0 :(得分:8)

首先,您必须在.h

中添加UITextFieldDelegate

然后在.m

yourtextfield.delegate = self

然后应用此代码

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

答案 1 :(得分:6)

@Peter Boesen:

完成后最小化键盘。即当"返回"按下了键...在代码的主要部分做出评论之前你需要x2的东西......

  1. 在视图控制器(代码)的顶部,您有class ViewController: UIViewController - 添加UITextFieldDelegate。所以最后看起来应该是这样的:

    class ViewController: UIViewController, UITextFieldDelegate

  2. 在func viewDidLoad添加的相同View Controller(代码)中 self.textField.delegate = self

  3. 然后......正如Abhinandan Pratap'所提到的那样,在按下'返回'

    时,使用以下代码来控制KeyBoard的行为
    func textFieldShouldReturn(textField: UITextField) -> Bool {
        textField.resignFirstResponder()
        return true
    } 
    

    但是,如果您想通过点击屏幕上的其他位置来最小化键盘,那么使用' TouchesBegan' (如果您不使用滚动视图)

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

    如果您在屏幕上使用scrollView,则需要将self.view.endEditing(true)UITapGesture结合使用,以便在键盘外部进行点击。

答案 2 :(得分:0)

这将起作用

self.view.endEditing(true)

答案 3 :(得分:0)

首先,您必须确认UITextFieldDelegate

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

答案 4 :(得分:0)

有时使用两种方式都会有所帮助(快速4):

首先使用在UITextFieldDelegate方法所在的地方声明一个委托textFieldShouldReturn

第二,您必须在初始化中设置self.textField.delegate = self 部分(通常在viewWillAppear(_ animated: Bool)viewDidLoad中使用)。

然后按以下方式填充方法:

func textFieldShouldReturn(_ textField: UITextField) -> Bool {
    self.resignFirstResponder()
    self.view.endEditing(true)
    //or use on superView of textField
    //superView.endEditing(true)
    return true
}