使用UITextView的子类和自定义屏幕键盘,调用textField.textShouldChange

时间:2018-01-01 20:21:36

标签: ios swift uitextfield uikit

我制作了一个自定义的屏幕键盘,其中 inputView的{​​{1}}

在键盘的委托方法中,我想调用UITextField

activeTextField.shouldChangeText(in: UITextRange, replacementText: String)这里显然是我的键盘生成的新值。 String只是一个用于子类化的类:

UITextRange

我不确定在这里做什么来定位完整的字符串。任何帮助,将不胜感激。谢谢!

2 个答案:

答案 0 :(得分:0)

如果我理解你的问题,那么activeTextField已经实现了UITextPosition和UITextRange的子类。您需要做的就是使用适当的getter来构造UITextRange。

听起来你想要使用这些方法:

beginningOfDocument

endOfDocument

textRange

也许是这样的:

myTextRange = activeTextfield.textRange(
                activeTextfield.beginningOfDocument(), 
                activeTextfield.endOfDocument())

文档在这里:https://developer.apple.com/documentation/uikit/uitextinput

答案 1 :(得分:0)

首先直接回答你的问题,你会创建一个这样的文本范围:

let textRange = activeTextField.textRange(activeTextField.beginningOfDocument, activeTextField.endOfDocument)

这将创建一个选项UITextRange,因此您需要考虑到这一点。

然而,即使你这样做,你仍然无法直接调用shouldChangeText,因为它是UITextInput协议的一部分,并且默认情况下不会为UITextField实现。你必须自己实现它。此外,它只会告诉您是否可以替换文本,它实际上不会替换。