UITextInput:如何显示实现 UITextInput 协议的自定义 UIView 的插入符?

问题描述 投票:0回答:2

我注意到,在 Apple 的

UITextInput
协议中,有一个名为
(CGRect)caretRectForPosition:(UITextPosition *)position
的必需方法,如您所见,它返回一个
CGRect
。当我在方法内部放置断点时,即使我调用
setSelectedTextRange:
方法,该方法也永远不会被调用。我是否必须在文本视图中实现自己的插入符号对象?我认为协议会自动处理这个问题,只是将插入符号添加到文本视图中,并使用由
CGRect
返回的
caretRectForTextPosition:
指定的框架。我将如何向实现
UIView
协议的
UITextInput
类显示/添加插入符号?

编辑

我已经从头到尾阅读了文档,但没有任何结果,甚至还搜索了其他人的示例实现。我最终自己实现了插入符。这是正确/建议的方法吗?

objective-c protocols caret uitextinput
2个回答
1
投票

是的,您必须自己实现插入符号。请参阅 Apple 的 SimpleTextInput 示例。


0
投票

9年后我发现这个帖子正在寻找这个问题的答案。现代答案:如果您已正确实现 UITextInput 协议(包括 caretRectForPosition)并附加 UITextInteraction,例如从包含视图来看:

        let textInteraction = UITextInteraction(for: .editable)
        textInteraction.textInput = self
        addInteraction(textInteraction)

然后 UITextInteraction 将处理光标显示。

© www.soinside.com 2019 - 2024. All rights reserved.