【问题标题】:Append text to a UITextField with custom keyboard made out of buttons使用由按钮组成的自定义键盘将文本附加到 UITextField
【发布时间】:2016-12-30 23:26:21
【问题描述】:

我有一个由一堆按钮组成的静态数字键盘,我还有三个 UITextFields、textField1、textField2 和 textField3,我使用静态键盘输入文本。

这是我用来检测当前焦点所在的 textField 并输入按钮内容的代码。它有点工作,但我不喜欢我有三个 IF 语句并且我不确定如何防止在点击 textField 时出现键盘。

实现此功能的最佳方式是什么?

@IBAction func appendKey(sender: AnyObject) {
    let digit = sender.currentTitle!

    if(textField1.isFirstResponder()){
        textField1.text = textField1.text! +  digit!
    }else if(textField2.isFirstResponder()){
        textField2.text = textField2.text! +  digit!
    }else if(textField3.isFirstResponder()){
        textField3.text = textField3.text! +  digit!
    }
}

谢谢

【问题讨论】:

  • 代码审查应发布在codereview.stackexchange.com
  • 这真的不是代码审查,我需要知道实现这些功能的正确方法,实际上我现在甚至不确定如何防止出现默认键盘。
  • 您说 “一切正常,但我不喜欢我有三个 IF 语句的事实,如何改进此代码?” - 这是一个请求代码审查。
  • 我知道,我道歉了。我只是编辑了我的问题,以更清楚地说明我仍然需要帮助来实现此功能。
  • 如果显示的是标准键盘,那么您的自定义键盘设置如何?您的自定义键盘应该是每个UITextFieldinputView。如果你这样做,标准键盘将不会出现,而是你的。

标签: ios swift uitextfield custom-keyboard


【解决方案1】:

如果显示的是标准键盘,则说明您的自定义键盘设置不正确。您的自定义键盘应该是每个UITextFieldinputView。如果你这样做,标准键盘将不会出现,而是你的。

您的自定义键盘应该是一个单独的类来处理它自己的所有按钮。看起来您在一个视图控制器中拥有一切——所有文本字段、所有按钮和所有按钮处理代码。这是一个不好的方法。创建您的自定义键盘类视图。放置所有代码来处理和显示该自定义视图类中的按钮。在视图控制器中创建此视图的单个实例,并将自定义键盘视图实例分配给每个文本字段的 inputView 属性。

在自定义键盘类中,监听UITextFieldTextDidBeginEditingNotification 通知。这是您跟踪当前文本字段的方式。您的自定义键盘类不应该对任何文本字段有任何特定引用,而不是跟踪当前字段。它还应该确保文本字段的inputView 是它自己。

在自定义键盘类的每个按钮处理程序中,获取您希望附加的文本,然后使用该字符串调用文本字段的insertText: 方法。而已。这将确保根据文本字段中的当前选择插入和/或替换文本。

【讨论】:

  • 你说的很对,我的观点是一致的。不幸的是,您的方法似乎很合理,我认为这比我的知识所能处理的要复杂一些。你有没有看过任何教程或我可以参考的东西作为起点?我会将您的答案标记为正确答案,因为您解释了该过程,我想是我不理解它的问题:(。
  • 请参阅stackoverflow.com/questions/13205160/…,但这一切都在 Objective-C 中。不确定 Swift 特有的任何内容。
  • 我将尝试消化 Objective-C 代码并尝试将其转换为 Swift。非常感谢您的帮助。
猜你喜欢
  • 2011-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多