【问题标题】:How can I reach UITextfield in subviews in Swift?如何在 Swift 的子视图中访问 UITextfield?
【发布时间】:2020-02-06 08:48:21
【问题描述】:

这是我在 Main.Storyboard 中的 ViewController 中的对象层次结构

按钮大小与超级视图相同。我想通过按钮单击操作来关闭键盘,这就是我编写此代码范围的原因:

@IBAction func btnCloseKeyboardClick(_ sender: UIButton) {
    print("A")
    for viewItem in self.view.subviews
    {
        print("B")
        if (viewItem is UITextField)
        {
            print("C")
            let tField = viewItem as! UITextField
            tField.resignFirstResponder()
        }
    }
}

但它没有关闭键盘意味着我没有看到print("C")

I solved this problem like in this link but I would like to ask above situation also

【问题讨论】:

    标签: ios swift uitextfield textfield subview


    【解决方案1】:

    如果您的视图中只有一个文本字段并且想要为此关闭键盘,简单的方法是在您的按钮操作中调用 view.endEditing(true)

    【讨论】:

    • 我的朋友谢谢,但假设我的页面中至少有 2 个文本字段对象。这就是我在按钮操作中编写“for scope”的原因。我可以编写您的代码,但首先我需要查看 print("C") 代码行。这就是问题。 @Mac3n
    • 以这种方式关闭键盘,您无需检查视图类类型,只需在您的 IBAction 方法调用 view.endEditing(true) 下方的 print("A")
    • 它在我删除 if (viewItem is UITextField) 就像你说的那样。但是如何检查 viewItem 是否为 UITextField?不需要这个检查吗?
    • 如果操作的目的是从视图中关闭键盘,则无需检查视图类型,因为 endEditing 方法属于视图而不是文本字段
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-02
    • 1970-01-01
    • 2018-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多