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

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

方法resignfirstresponder没有进入函数。


当前回答

override func viewDidLoad() {
    super.viewDidLoad()

    let tap = UITapGestureRecognizer(target: self, action: #selector(handleScreenTap(sender:)))
    self.view.addGestureRecognizer(tap)}

然后用这个函数

func handleScreenTap(sender: UITapGestureRecognizer) {
    self.view.endEditing(true)
}

其他回答

斯威夫特

使用UITextFieldDelegate的可选函数。

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

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

@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);
    }

您可以使用以下函数使应用程序解除键盘

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

下面是一个完整的例子来更好地说明这一点:

//
//  ViewController.swift
//
//

import UIKit

class ViewController: UIViewController, UITextFieldDelegate {

    @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
    }

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

代码来源:http://www.snip2code.com/Snippet/85930/swift-delegate-sample

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

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

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

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

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

self.view.endEditing(true)

这对我很有效