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

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

方法resignfirstresponder没有进入函数。


当前回答

不需要委派

你可以从UITextField为“Primary action triggers”创建一个动作出口,并在传入的sender参数上辞职第一响应者:

@IBAction func done(_ sender: UITextField) {
    sender.resignFirstResponder()
}

超级简单。

(感谢斯科特·史密斯60秒的视频,让我知道了这一点:https://youtu.be/v6GrnVQy7iA)

其他回答

@RSC

对我来说,Xcode Version 6.2 (6C86e)的关键添加是override func viewDidLoad()

 self.input.delegate = self;

我试着用返回键让它工作了几个小时,直到我找到了你的帖子,RSC。谢谢你!

此外,如果你想隐藏键盘,如果你触摸屏幕上的其他地方:

override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
        self.view.endEditing(true);
    }

Add UITextFieldDelegate to the class declaration: class ViewController: UIViewController, UITextFieldDelegate Connect the textfield or write it programmatically @IBOutlet weak var userText: UITextField! set your view controller as the text fields delegate in view did load: override func viewDidLoad() { super.viewDidLoad() self.userText.delegate = self } Add the following function func textFieldShouldReturn(userText: UITextField!) -> Bool { userText.resignFirstResponder() return true; } with all this your keyboard will begin to dismiss by touching outside the textfield aswell as by pressing return key.

确保你的textField委托被设置为视图控制器,从你正在写你的textField相关的代码。

self.textField.delegate = self

我讨厌给每个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)

不需要委派

你可以从UITextField为“Primary action triggers”创建一个动作出口,并在传入的sender参数上辞职第一响应者:

@IBAction func done(_ sender: UITextField) {
    sender.resignFirstResponder()
}

超级简单。

(感谢斯科特·史密斯60秒的视频,让我知道了这一点:https://youtu.be/v6GrnVQy7iA)