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

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

方法resignfirstresponder没有进入函数。


当前回答

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

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

其他回答

我建议从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;
}

}

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

斯威夫特

使用UITextFieldDelegate的可选函数。

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

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

在你正在使用的视图控制器中:

//suppose you are using the textfield label as this

@IBOutlet weak var emailLabel: UITextField!
@IBOutlet weak var passwordLabel: UITextField!

//then your viewdidload should have the code like this
override func viewDidLoad() {
        super.viewDidLoad()

        self.emailLabel.delegate = self
        self.passwordLabel.delegate = self

    }

//then you should implement the func named textFieldShouldReturn
 func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        textField.resignFirstResponder()
        return true
    }

// -- then, further if you want to close the keyboard when pressed somewhere else on the screen you can implement the following method too:

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

斯威夫特3

将下面的代码添加到你的VC中

//hide keyboard when user tapps on return key on the keyboard
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
    self.view.endEditing(true);
    return false;
}

对我有用