Apo*_*llo 11 objective-c uitextview ios swift
我正在尝试根据用户的偏好设置UITextView的光标颜色.他们用按钮选择他们想要的颜色.
默认情况下,textview的光标颜色为白色.当用户按下按钮时,它可能会变为绿色:
[_textView setTintColor:[UIColor greenColor]];
[_textView setTextColor:[UIColor greenColor]];
Run Code Online (Sandbox Code Playgroud)
我确信这个方法调用是有效的,因为textview的文本改变颜色,而不是光标...
Vik*_*ica 22
我能够重新创建您的行为:如果我在未选择文本视图时更改色调和文本颜色(也就是:不是第一响应者),一切都将按预期工作.
但是如果我先选择它,通过点击它而不是通过按下按钮来改变颜色,它们的插入符号(色调)颜色不会改变.
这是一个解决方法:
- (IBAction)changeColor:(id)sender
{
[_textView setTextColor:[UIColor greenColor]];
[_textView setTintColor:[UIColor greenColor]];
if([_textView isFirstResponder]){
[_textView resignFirstResponder];
[_textView becomeFirstResponder];
}
}
Run Code Online (Sandbox Code Playgroud)
我在 UITextViewDelegate 方法中使用了小技巧:
func textViewDidBeginEditing(_ textView: UITextView) {
let color = textView.tintColor
textView.tintColor = .clear
textView.tintColor = color
}
Run Code Online (Sandbox Code Playgroud)
UPD
更科技的方式:
1) 在扩展中实现方法:
extension UITextView {
func resetTintColor(){
let color = tintColor
tintColor = .clear
tintColor = color
}
}
Run Code Online (Sandbox Code Playgroud)
2) 在 UITextViewDelegate 实现中:
func textViewDidBeginEditing(_ textView: UITextView) {
textView.resetTintColor()
}
Run Code Online (Sandbox Code Playgroud)