C# UITextView-InsertText不';t自动更正或自动大写

C# UITextView-InsertText不';t自动更正或自动大写,c#,ios,objective-c,xamarin.ios,uitextview,C#,Ios,Objective C,Xamarin.ios,Uitextview,我在UITextView上有一个自定义的InputView,并启用了自动更正和自动大写 我的自定义输入视图有一组ui按钮,它们在UITextView上调用InsertText。这适用于在当前光标位置插入文本。问题是,当调用InsertText时,自动更正和自动大写不起作用。如果输入通过蓝牙键盘或标准键盘输入,一切正常 是否有某种方法可以调用UITextView使自动更正/自动大写无效SetNeedsDisplay是我第一次尝试,但没有效果。此外,我的应用程序可能是iOS 7或更高版本,因此可以使

我在
UITextView
上有一个自定义的
InputView
,并启用了自动更正和自动大写

我的自定义输入视图有一组
ui按钮
,它们在
UITextView
上调用
InsertText
。这适用于在当前光标位置插入文本。问题是,当调用
InsertText
时,自动更正和自动大写不起作用。如果输入通过蓝牙键盘或标准键盘输入,一切正常

是否有某种方法可以调用
UITextView
使自动更正/自动大写无效
SetNeedsDisplay
是我第一次尝试,但没有效果。此外,我的应用程序可能是iOS 7或更高版本,因此可以使用更新的文本API


*注意:我使用的是MonoTouch(Xamarin.iOS),但是欢迎使用Objective-C答案。

如果不使用您自己的自动更正系统,就不能使用。iOS自动更正系统对开发人员来说是不透明的,并且只对键盘输入有效。每当您在输入或文本视图上显式设置
.text
属性时,您设置的值就是将显示的值。

好的,我找到了一种方法:

  • 实现您自己的
    NSTextStorage
  • 设置
    NSLayoutManager
    NSTextContainer
    以协调
    NSTextStorage
    UITextView
  • 以编程方式修改
    NSTextStorage
    子类时,自动更正“just works”

我认为这是可行的,因为修改
NSTextStorage
会触发事件,通知
UITextView
更新自动更正之类的内容。它仅适用于iOS 7及更高版本。

实现您自己的
inputView
的推荐方法是什么?只要调用
insertText
,自动更正就不起作用了?就我而言,我正在用一个定制的键盘替换系统键盘。哦,我明白了。是的,我不确定最好的办法是什么。祝你好运:)这是一个很长的机会,但是如果你可以模拟按键事件,你可以复制你想要插入的文本。这不是一个非常优雅的解决方案。是的,这就是我想做的。哪些API允许我这样做?我发现了下面的文章。但我担心该应用程序会被苹果拒绝。不幸的是,我正在寻找一个AppStore批准的选项。。。无法使用私有API。很抱歉听到这个消息。如果您找到解决方案,请给我们一个更新。我想了解有关此答案的更多详细信息:)您可以发布演示代码吗?我已经按照所有步骤进行了操作,并将
nsattributed string
按顺序添加到NSTextStorage中,@“t”,“e”,“s”,“t”,“t”,“t”然后通过NSTextContainer将其发送到UITextView,UITextView被更新为“t”->“te”->“tes”->“test”->“testt”->“testt”,并且在整个过程中从来没有任何自动更正?是否在UITextView上调用insertText?我检查了我们的应用程序,这就是我们正在做的。