分别创建NSTextField 和 NSScureTextField 的子类, 在子类方法中, 重写becomeFirstResponse方法, 在当前的textField变为第一响应的时候 对其做一些改变.
在becomeFirstResponder方法内, 写入改变光标颜色的方法. 由于[self currentEditor] 总是会返回当前正在编辑的NSTextView, 所以可以使用NSTextView的insertPointColor方法来改变光标颜色. 具体代码如下
- (BOOL)becomeFirstResponder {
BOOLsuccess = [super becomeFirstResponder];
if(success) {
NSTextView * textView = (NSTextView *)[self currentEditor];
if([textView respondsToSelector:@selector(setInsertionPointColor:)]) {
[textView setInsertionPointColor:[NSColor redColor]];
}
}
return success;
}
有些文章中介绍说要自定义NSTextFieldCell和NSSecureTextField, 在其内部重写setUpFieldEditorAttributes:方法, 来对当前正在编辑的NSTextView进行设置setInsetPointColor,虽然原理是一样的, 但是实际操作中发现, 重写cell的setUpFieldEditorAttributes方法, 对NSSecureTextField并不起作用, 而且还会影响到SecureTextField的focusRing.
macOS开发刚刚入坑, 如有问题, 请不吝赐教.
网友评论