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