2016-08-24 61 views
1

我有一个静态数字键盘,它由一堆按钮组成,我也有三个UITextFields,textField1,textField2和textField3,我在这里输入文本静态键盘。将文本附加到UITextField,并使用按钮制作自定义键盘

这是我用来检测哪个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! 
    } 
} 

感谢

+1

代码评论应发布在http://codereview.stackexchange.com。 – rmaddy

+0

这真的不是代码审查,我需要知道实现这样的功能的正确方法,事实上,现在我甚至不知道如何防止默认键盘出现。 –

+0

您声明*“一切正常,但我不喜欢我有三条IF语句,该代码如何改进?” - 这是一个代码审查请求。 – rmaddy

回答

2

如果标准键盘然后显示您的自定义键盘没有设置正确。您的自定义键盘应为各UITextFieldinputView。如果你这样做,标准键盘将不会出现,你的将代之。

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

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

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

+0

你是完全正确的,我拥有同一视野内的一切。不幸的是,你的方法看起来很合理,我认为它比我的知识能够处理的要复杂一点。你有没有看过任何教程或我可以参考的起点?我会将你的答案标记为正确的答案,因为你解释了这个过程,我猜是我的问题不理解它:(。 –

+0

请参阅http:// stackoverflow。com/questions/13205160/how-do-i-retrieve-keys-from-a-custom-keyboard-on-an-ios-app,但它都在Objective-C中。不确定任何特定于Swift的东西。 – rmaddy

+0

我将尝试消化Objective-C代码并尝试将其转换为Swift。非常感谢你的帮助。 –