Swift:UITextField 在第一次被点击时被立即关闭

Posted

技术标签:

【中文标题】Swift:UITextField 在第一次被点击时被立即关闭【英文标题】:Swift: UITextField being instantly dismissed the first time it is clicked 【发布时间】:2017-02-04 13:31:20 【问题描述】:

当我打开应用程序并单击 UITextField 时,它会在第一次单击时立即被关闭。在第一次没有在视图外部单击的情况下,它不会被解雇。

我使用了这个答案:Close ios Keyboard by touching anywhere using Swift 用于在点击 textField 之外的区域时关闭 textField 的代码。代码:

class SettingsViewController: UIViewController, UITextFieldDelegate 

@IBOutlet weak var textField: UITextField!

override func viewDidLoad() 
    super.viewDidLoad()

    textField.delegate = self



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



func textFieldShouldReturn(_ textField: UITextField) -> Bool 

    textField.resignFirstResponder()
    return false

【问题讨论】:

你期望的输出 我希望 textField 在第一次点击时不会自动关闭。当用户点击屏幕上的其他位置时,我希望 textField 会被关闭。 你能添加你的viewcontroller代码吗 添加了与 textField 相关的所有代码 你试过我的答案了吗,每当你点击文本字段时它总是会显示键盘,它只会在用户点击外部时关闭键盘,你需要这个否则 【参考方案1】:

认为您的问题是,当有人点击视图而不是文本字段时,您想关闭键盘。为此,您可以覆盖在视图控制器上开始的触摸:

import UIKit

class ViewController: UIViewController 

    // MARK: - Properties
    @IBOutlet weak var textField: UITextField!

    // MARK: - Actions
    // will resign any first repsonder on this view contorller
    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) 
        view.endEditing(true)
    

    // MARK: - Lifecycle
    override func viewDidLoad() 
        textField.delegate = self
    



extension ViewController: UITextFieldDelegate 
    func textFieldShouldReturn(_ textField: UITextField) -> Bool 
        textField.resignFirstResponder()
        return false
    

而且不用担心水龙头等问题。

【讨论】:

对不起,如果不清楚,我的问题是 textField 在第一次被点击并打开键盘时被自动关闭。不过,第一次点击后似乎不会出现此问题。 你能帮我解决一下'textField automatically dismissed'的问题吗?我推断这意味着键盘隐藏了? 正确,当 textField 被点击时,键盘会出现一瞬间然后自动隐藏/消失。 我确定这是重复的 - 我认为您在保持点击状态和手势识别器方面过度工程。根据您提供的应该为您工作的内容,删除所有这些并覆盖我给出的答案中开始的触摸。在此期间,我将尝试找到一个重复的链接并投票关闭这个问题。 我已经更新了我的答案以演示它应该如何工作。

以上是关于Swift:UITextField 在第一次被点击时被立即关闭的主要内容,如果未能解决你的问题,请参考以下文章

Swift:点击 UITextField 时如何显示 UIPickerView

Swift:UITextField 被键盘隐藏

Swift:无法让 UITextField 关闭键盘

swift 点击Textfield 后自动上移,避免键盘被遮住

键盘出现时UITextField上移【Swift】

Swift 如何让所有 uiTextfield 上的第一响应者辞职