6

我在我的应用程序中使用蓝色背景的文本视图。

启用自动更正后,只要它更正一个单词,就会在该单词周围形成一个白框,并且文本的颜色也会发生变化。

关于如何阻止这种影响的任何想法?

4

2 回答 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;
        }
    }
}

它有效..但这会导致光标丢失,并禁用任何选择:(

我认为您必须禁用自动更正..

如果有人找到真正的答案,我将重新开始赏金!

于 2013-01-05T14:51:55.353 回答
0

这可能有其他副作用我目前正在调查其他所谓的,但覆盖 UITextView 中的 firstRect(for range) 并返回 CGrect.Zero 会删除突出显示。

override public func firstRect(for range: UITextRange) -> CGRect {
     return CGRect.zero;
}
于 2017-02-22T17:22:29.003 回答