我在我的应用中使用了蓝色背景的文本视图。
启用自动更正后,无论何时更正单词,都会在单词周围形成一个白框,文本的颜色也会发生变化。
关于如何阻止这种影响的任何想法?
答案 0 :(得分: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;
}
}
}
它工作..但是这会导致错过光标,并禁用任何选择:(
我认为你必须禁用自动更正..
如果有人找到真正的答案,我会重新开始赏金!
答案 1 :(得分:0)
这可能有其他副作用我正在调查其他什么叫这个,但是在UITextView中覆盖firstRect(for range)并返回CGrect.Zero会删除突出显示。
override public func firstRect(for range: UITextRange) -> CGRect {
return CGRect.zero;
}