【问题标题】:How to apply textFieldShouldBeginEditing on one specific UITextField in Swift如何在 Swift 中的一个特定 UITextField 上应用 textFieldShouldBeginEditing
【发布时间】:2015-03-31 22:52:00
【问题描述】:

我有四个文本字段,分别是地址、城市、州和邮编。我只需要为状态字段调用 Picker View,因此我只需要在状态文本字段上隐藏键盘。我正在尝试使用这段代码在 textFieldShouldBeginEditing 函数中执行此操作,但它会将其应用于所有文本字段。

func textFieldShouldBeginEditing(state: UITextField) -> Bool {
 return false
}

我还将这段代码应用于所有文本字段,因此键盘将在返回时隐藏

func textFieldShouldReturn(textField: UITextField!) -> Bool {
    self.view.endEditing(true)
    return false
}

所以我所有的文本字段都在 viewDidLoad 中

    address.delegate = self
    city.delegate = self
    zip.delegate = self
    state.delegate = self

我希望这足够具体。感谢您的帮助!

【问题讨论】:

  • 如果您想要一个选择器视图而不是文本字段的标准键盘,请将文本字段的inputView 设置为选择器视图。你不需要实现textFieldShouldBeginEditing

标签: ios swift uitextfield


【解决方案1】:

在委托回调中,您可以使用您的文本字段验证“文本字段”。 例如:

func textFieldShouldReturn(textField: UITextField!) -> Bool {
    if textField == address {
       self.view.endEditing(true)
       return false
    }
    ...
}

【讨论】:

    【解决方案2】:

    首先,通过这样做

    func textFieldShouldBeginEditing(state: UITextField) -> Bool {
     return false
    }
    

    您不是在“选择”文本字段,您只是在命名该变量。

    您应该做的是将该变量与您的属性进行比较,并根据它采取行动。

    func textFieldShouldBeginEditing(textField: UITextField) -> Bool {
     if(textField == self.state)
      return false
     return true;
    }
    

    PS。 addresscity 等都不是很好的变量名。当然,你知道它们是什么,但如果其他人正在查看代码,它不会很明显,我建议使用像 addressTextField 甚至 addressField 这样的名称。

    【讨论】:

    • 非常感谢您对变量名的帮助和提示!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-08
    • 2020-11-19
    • 1970-01-01
    • 1970-01-01
    • 2016-12-12
    相关资源
    最近更新 更多