我有一个由一堆按钮组成的静态数字键盘,还有三个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!
    }
}

谢谢

最佳答案

如果显示标准键盘,则您的自定义键盘设置不正确。您的自定义键盘应该是每个inputViewUITextField。如果这样做,则不会显示标准键盘,而是显示您的键盘。

您的自定义键盘应该是一个单独的类,用于处理所有自己的按钮。似乎所有内容都集中在一个视图控制器中-所有文本字段,所有按钮以及所有按钮处理代码。这是一个不好的方法。创建您的自定义键盘类视图。将所有代码放入该自定义视图类中以处理并显示按钮。在视图控制器中创建此视图的单个实例,然后将自定义键盘视图实例分配给每个文本字段的inputView属性。

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

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

10-08 08:06
查看更多