在应用

时间:2015-12-21 16:43:46

标签: ios ios-keyboard-extension textdocumentproxy

我目前的作业是iOS键盘扩展程序。现在,要通过App Store Review,包含的应用程序必须提供一些“真实”内容。我想过让用户在设置中启用它之前测试键盘。所以我的故事板看起来像这样(减少显示相关的东西):

└ ViewController
  └ View
    ├ TextField
    └ Keyboard Container
      └ KeyboardViewController

这很好用,键盘显示在容器中,但是 - 由于键盘视图控制器中的textDocumentProxy对象没有附加到任何东西 - 用户无法看到他/她正在键入的内容。 / p>

现在我正在寻找一种方法将键盘“附加”到文本字段,同时保持系统键盘不受影响,以便用户可以键入自定义键盘。

我已经设法通过将以下功能附加到文本字段的editing did begin操作来取消系统键盘。

@IBAction func editingBegan(sender: UITextField) {
    sender.endEditing(true)
}

1 个答案:

答案 0 :(得分:0)

我设法找到以下解决方法:

我创建了一个实现UITextDocumentProxy协议的类,该协议写入文本字段,并将其设置为键盘视图控制器中的附加代理:

vdot

正如你所看到的,我只实现了一个极简主义的类(仅在结尾处进行文本输入/删除),因为我完全禁用了文本字段的用户交互性,因此不会弹出“真正的”键盘。另外,我不允许插入换行符。

它可能看起来有点hackish并且可能有更好的解决方案(随意告诉我),但这是有效的,因此我使用它。