首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法从resignFirstResponder从UITextField

无法从resignFirstResponder从UITextField
EN

Stack Overflow用户
提问于 2017-10-25 12:36:28
回答 2查看 141关注 0票数 0

你知道(你明白)为什么我不能从FirstResponder辞职并隐藏键盘吗?

FYI: Xcode 9

代码语言:javascript
复制
import UIKit

class ViewController: UIViewController, UITextFieldDelegate {

    @IBOutlet weak var label: UILabel!
    @IBOutlet weak var text: UITextField!

    override func viewDidLoad() {
        super.viewDidLoad()

        self.text.delegate = self
        let tap = UITapGestureRecognizer(target: self, action: #selector(ViewController.tapFunction))
        label.isUserInteractionEnabled = true
        label.addGestureRecognizer(tap)
    }

    var keyboardInputEnabled = true
    @objc func tapFunction(sender:UITapGestureRecognizer) {
        if self.keyboardInputEnabled {
            self.text.becomeFirstResponder()
        }else{
            self.view.endEditing(true)
            self.text.resignFirstResponder()
        }
        self.keyboardInputEnabled = !self.keyboardInputEnabled
    }

    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        return self.keyboardInputEnabled
    }

    func textFieldShouldEndEditing(_ textField: UITextField) -> Bool {
        return self.keyboardInputEnabled
    }

    func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
        return self.keyboardInputEnabled
    }


    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-10-25 12:47:45

因为textFieldShouldEndEditing在第二次运行tapFunction时返回false,这使得它无法结束编辑模式。

取自

通常,您将从此方法返回true,以允许文本字段退出第一个响应状态。但是,如果委托检测到文本字段中的无效内容,则可能返回false。返回false会防止用户切换到另一个控件,直到文本字段包含有效值为止。

票数 2
EN

Stack Overflow用户

发布于 2017-10-25 12:39:32

试一试

禁用键盘的self.view.endEditing(true)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46932627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档