gpt4 book ai didi

ios - 在应用程序中使用自定义 InputViewController

转载 作者:行者123 更新时间:2023-11-29 12:08:03 25 4
gpt4 key购买 nike

我目前的任务是 iOS 键盘扩展。现在,要通过 App Store Review,包含应用程序必须提供一些“真实”内容。我考虑过让用户在设置中启用键盘之前测试键盘。所以我的 Storyboard看起来像这样(缩小以显示相关内容):

└ ViewController
└ View
├ TextField
└ Keyboard Container
└ KeyboardViewController

一切正常,键盘显示在容器中,但是 - 因为键盘 View Controller 中的 textDocumentProxy 对象没有附加到任何东西 - 用户看不到他/她是什么打字。

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

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

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

最佳答案

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

我创建了一个实现 UITextDocumentProxy 协议(protocol)的类,它写入文本字段,并将其设置为键盘 View Controller 中的附加代理:

class ProxyWrapper: NSObject, UITextDocumentProxy {

private let textField: UITextField

init(textField: UITextField) {
self.textField = textField
}

var documentContextBeforeInput: String? {
get {
return textField.text
}
}

var documentContextAfterInput: String? {
get {
return ""
}
}

func adjustTextPositionByCharacterOffset(offset: Int) {}

func insertText(text: String) {
let ntext = text.stringByReplacingOccurrencesOfString("\n", withString: "")
textField.text = (textField.text ?? "") + ntext
}

func deleteBackward() {
if let text = textField.text {
textField.text = text.substringToIndex(text.endIndex.advancedBy(-1))
}
}

func hasText() -> Bool {
return textField.hasText()
}

}

如您所见,我只实现了一个非常简约的类(仅在最后输入/删除文本),因为我完全禁用了文本字段的用户交互性,因此不会弹出“真正的”键盘。另外,我不允许插入换行符。

这可能看起来有点老套,而且可能有更好的解决方案(请随时告诉我),但这很有效,因此我使用了它。

关于ios - 在应用程序中使用自定义 InputViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34400480/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com