NSTextField 和 NSSecureTextField 修改光标颜色

分别创建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开发刚刚入坑, 如有问题, 请不吝赐教. 

你可能感兴趣的:(NSTextField 和 NSSecureTextField 修改光标颜色)