带颜色的UITextview自动更正问题

6

我在我的应用程序中使用了一个带有蓝色背景的文本视图。

当启用自动更正功能时,每当它更正一个单词时,该单词周围会形成一个白色框,并且文本的颜色也会改变。

有什么方法可以停止这种效果吗?


我有同样的问题,但是找不到答案...有人知道吗?我愿意提供悬赏金来寻求答案(前提是该答案不会被应用商店拒绝)。 - Cashew
加油!连一个评论都没有吗?难道没有其他人使用带有颜色的UITextView自动更正吗?只有我(和OP)有这个问题吗?至少发表一条评论并说“我也遇到了同样的问题,我认为……” - Cashew
抱歉,我进行了一些搜索,但没有找到有用的信息。 - JSuar
未回答的类似问题:https://dev59.com/_mct5IYBdhLWcg3wUb5- - JSuar
@JSuar 谢谢你提供的链接。我之前已经看过了。不幸的是,还没有答案... - Cashew
有人解决了这个问题吗?我正在开发另一个应用程序时也遇到了这个问题,即使在iOS 7测试版中仍然存在...我不能说更多(保密协议)... - Cashew
2个回答

4

不好意思,我认为您无法直接更改覆盖层或文本颜色的颜色。

这是一个难题,如果您在视图的-(void)layoutSubviews {..} 中设置断点,则会看到UIKit在文本上方绘制了“UITextSelectionView”...

我尝试对UITextView进行子类化,以查看它的layoutSubviews是否被触发,结果似乎是被触发了!

因此,我尝试删除覆盖层:

- (void) layoutSubviews {
    [super layoutSubviews];

    for (UIView *subview in self.subviews) {
        if ([NSStringFromClass([subview class]) isEqualToString:@"UITextSelectionView"]) {
            DLog(@"Subview %@", [subview debugDescription]);
            [subview removeFromSuperview];
            break;
        }
    }
}

它起作用了.. 但结果是光标丢失,无法选择:(

我认为您需要禁用自动更正..

如果有人找到真正的答案,我会重新开始奖励!


自动纠正在我的应用程序中是必须的,我不能禁用它。我会尝试您的代码,并希望能找出解决办法。感谢您的努力。 - Cashew
是的,我也这样想,祝你好运!如果你找到了什么东西,请告诉我! - Tieme
:( 似乎没有找到答案。 我会授予您赏金,因为让它浪费太可惜了。 - Cashew
太遗憾了 :( 如果有人找到真正的答案,我会重新开启悬赏! - Tieme

0

这可能会产生其他副作用,我目前正在调查还有哪些调用了它,但是在UITextView中覆盖firstRect(for range)并返回CGrect.Zero可以去除高亮。

override public func firstRect(for range: UITextRange) -> CGRect {
     return CGRect.zero;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接