我正在使用UITextfied,而点击textfied键盘出现,但当我按下返回键,键盘没有消失。我使用了以下代码:

func textFieldShouldReturn(textField: UITextField!) -> Bool // called when 'return' key pressed. return NO to ignore.
{
    return true;
}

方法resignfirstresponder没有进入函数。


当前回答

我建议从RSC初始化类:

import Foundation
import UIKit

// Don't forget the delegate!
class ViewController: UIViewController, UITextFieldDelegate {

required init(coder aDecoder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
}

@IBOutlet var myTextField : UITextField?

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    self.myTextField.delegate = self;
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

func textFieldShouldReturn(textField: UITextField!) -> Bool {
    self.view.endEditing(true);
    return false;
}

}

其他回答

你应该连接UITextfied和一个视图控制器的委托来调用这个函数

斯威夫特

使用UITextFieldDelegate的可选函数。

func textFieldShouldReturn(_ textField: UITextField) -> Bool {
    textField.endEditing(false)
}

False表示可以要求该字段辞职。真力辞职。

你可以把它放在任何地方,但不能放在UIButton中

 func TextFieldEndEditing(text fiend name: UITextField!) -> Bool
{
    return (false)
}

然后你可以把这段代码放在一个按钮中(也是一个例子):

self.view.endEditing(true)

这对我很有效

下面是Swift 3.0版本对peacetype注释的更新:

textField.addTarget(nil, action:Selector(("firstResponderAction:")), for:.editingDidEndOnExit)

我讨厌给每个UIViewController添加相同的函数。 通过扩展UIViewController来支持UITextFieldDelegate,你可以提供一个默认行为“返回按下”。

extension UIViewController: UITextFieldDelegate{
    public func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        textField.resignFirstResponder()
        return true;
    }
}

当你创建新的UIViewController和UITextField时,你所要做的就是在你的UIViewController中写一行代码。

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

你甚至可以通过在Main.storyboard中钩子委托来省略这一行代码。(使用“ctrl”从UITextField拖动到UIViewController)