【发布时间】:2016-02-03 12:30:42
【问题描述】:
我制作了一个应用内自定义键盘,它取代了系统键盘,并在我点击 UITextField 时弹出。
这是我的代码:
class ViewController: UIViewController {
var myCustomKeyboard: UIView!
@IBOutlet weak var textField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
let keyboardNib = UINib(nibName: "Keyboard", bundle: nil)
myCustomKeyboard = keyboardNib.instantiateWithOwner(self, options: nil)[0] as! UIView
textField.inputView = myCustomKeyboard
}
}
键盘布局是从 xib 文件加载的。
问题
如何将按钮文本放入文本字段?
注意事项:
- 有很多关于制作自定义系统键盘的教程(需要安装),但我只想要一个应用内键盘。教程使用了专门的键盘视图控制器,但在这里我似乎只是在设置键盘视图。
- 我已阅读Custom Views for Data Input 文档。
- This 是我能找到的最接近的 Stack Overflow 问题,但它并没有描述如何从按钮中获取文本。
更新
- This tutorial 似乎表明自定义输入视图有一个视图控制器。但是,我迷失在 Objective-C 代码中。 Swift 中的流程是什么?
-
This answer 提到了
UITextField符合的UIKeyInput协议,但是我该如何使用呢? - 如果有任何内置方式也可以制作自定义应用内键盘,我真的更喜欢制作普通的自定义视图。
【问题讨论】:
-
只需将按钮标题附加到文本字段:
textField.text = textField.text+button.title? -
由于按钮存储在 xib 文件中,我如何获得对它们的引用?
-
您可以为您的键盘创建一个自定义视图子类并公开按钮,或者更好地实现一个委托。或者,如果您想保留您的 xib,请在您的 xib 中为您的按钮添加一个标签。然后使用
myCustomKeyboard.viewWithTag(tag)访问它们 -
感谢这些想法。我可能最终会选择类似的东西。但是,对于系统键盘,视图控制器不需要知道有关键盘上的按钮的任何信息。它只接受其中的文本。应用内自定义键盘没有类似的东西吗?
-
我不这么认为。您必须自己管理键盘行为,因为它只是一个自定义视图。