我在我的应用程序中使用了一个带有蓝色背景的文本视图。
当启用自动更正功能时,每当它更正一个单词时,该单词周围会形成一个白色框,并且文本的颜色也会改变。
有什么方法可以停止这种效果吗?
我在我的应用程序中使用了一个带有蓝色背景的文本视图。
当启用自动更正功能时,每当它更正一个单词时,该单词周围会形成一个白色框,并且文本的颜色也会改变。
有什么方法可以停止这种效果吗?
不好意思,我认为您无法直接更改覆盖层或文本颜色的颜色。
这是一个难题,如果您在视图的-(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;
}
}
}
它起作用了.. 但结果是光标丢失,无法选择:(
我认为您需要禁用自动更正..
如果有人找到真正的答案,我会重新开始奖励!
这可能会产生其他副作用,我目前正在调查还有哪些调用了它,但是在UITextView中覆盖firstRect(for range)并返回CGrect.Zero可以去除高亮。
override public func firstRect(for range: UITextRange) -> CGRect {
return CGRect.zero;
}