我正在尝试实现我自己的 UITextInput 但是我无法使用蓝牙键盘上的光标键更新位置。我正在尝试创建一个循环的 TextInput,如果您想像这样编号的字符:
1 2 3
4 5 6
7 8 9
然后在位置 2 向上按,应该带你到位置 8(在 6 上按向左带你到 4 等)。iOS 似乎调用 positionFromPosition:inDirection:offset: 来计算如何从当前位置移动。然后它调用 setSelectedTextRange: 来更新光标位置。
到目前为止这很好,但似乎有时 iOS 不会调用 positionFromPosition:inDirection:offset: 例如,如果我再次按向上然后向下,iOS 似乎会缓存以前的位置并使用之前的值调用 setSelectedTextRange:。我不明白这一点,有没有办法告诉 iOS 所选位置已更改并且它应该清除它的缓存,即如果有人按下“清除”按钮或其他东西?
缓存似乎只发生在 Up 和 Down 光标按键上,左右移动永远不会缓存以前的值,并且 positionFromPosition:inDirection:offset: 总是被调用。即使我不考虑重置光标位置的可能性,我仍然遇到不偶尔调用“positionFromPosition:inDirection:offset:”的问题,并且我只是不断将“setSelectedTextRange:”设置为iOS设置的相同值。因此,如果感觉我误解了 iOS 如何缓存光标移动。谁能帮我吗?