我注意到,在 Apple 的
UITextInput
协议中,有一个名为 (CGRect)caretRectForPosition:(UITextPosition *)position
的必需方法,如您所见,它返回一个 CGRect
。当我在方法内部放置断点时,即使我调用 setSelectedTextRange:
方法,该方法也永远不会被调用。我是否必须在文本视图中实现自己的插入符号对象?我认为协议会自动处理这个问题,只是将插入符号添加到文本视图中,并使用由 CGRect
返回的 caretRectForTextPosition:
指定的框架。我将如何向实现 UIView
协议的 UITextInput
类显示/添加插入符号?
编辑
我已经从头到尾阅读了文档,但没有任何结果,甚至还搜索了其他人的示例实现。我最终自己实现了插入符。这是正确/建议的方法吗?
是的,您必须自己实现插入符号。请参阅 Apple 的 SimpleTextInput 示例。
9年后我发现这个帖子正在寻找这个问题的答案。现代答案:如果您已正确实现 UITextInput 协议(包括 caretRectForPosition)并附加 UITextInteraction,例如从包含视图来看:
let textInteraction = UITextInteraction(for: .editable)
textInteraction.textInput = self
addInteraction(textInteraction)
然后 UITextInteraction 将处理光标显示。