自定义NSSearchField光标颜色
2015-11-21 11:45
681 查看
自定义NSSearchField光标颜色
本文主要介绍如何自定义输入框中光标的颜色。如果想自定义NSSearchField样式,请参考老谭的一片文章:http://www.tanhao.me/pieces/1580.html/,该文章里面做了一些详细的介绍。
改变光标颜色有两种方法:
1. 子类化NSSearchFieldCell,重写setUpFieldEditorAttributes方法,代码片段如下。
NSSearchField获取焦点,要显示光标的时候,都会调用该方法。
2. 遍历NSSearchField的子视图(subviews), 取出_NSKeyboardFocusClipView类的对象,然后再取出里面的
NSTextView对象,调用setInsertionPointColor函数,传入想要的颜色,代码片段如下。
两种方法的不同之处在于:方法一调用的前提,是输入框由无光标到有光标时才触发,如果在有光标的时候想改变光标的颜色,就只能使用方法二;方法二只有在输入框有光标的时候才会起作用,无光标的时候就没法触发。
所以两种方法配合使用,就可以完美实现不同Theme下光标颜色的切换。
转载请注明出处:http://blog.csdn.net/skynullcode
本文主要介绍如何自定义输入框中光标的颜色。如果想自定义NSSearchField样式,请参考老谭的一片文章:http://www.tanhao.me/pieces/1580.html/,该文章里面做了一些详细的介绍。
改变光标颜色有两种方法:
1. 子类化NSSearchFieldCell,重写setUpFieldEditorAttributes方法,代码片段如下。
- (NSText *)setUpFieldEditorAttributes:(NSText *)textObj { NSText *text = [super setUpFieldEditorAttributes:textObj]; [text setBackgroundColor:self.backgroundColor]; text.drawsBackground = YES; [(NSTextView*)text setInsertionPointColor:[NSColor whiteColor]]; return text; }
NSSearchField获取焦点,要显示光标的时候,都会调用该方法。
2. 遍历NSSearchField的子视图(subviews), 取出_NSKeyboardFocusClipView类的对象,然后再取出里面的
NSTextView对象,调用setInsertionPointColor函数,传入想要的颜色,代码片段如下。
if (self.searchField.subviews.count) { __block NSView *keyboardFocusClipView; [self.searchField.subviews enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { // NSClassFromString(@"_NSKeyboardFocusClipView"); if ([obj isKindOfClass:[NSClipView class]]) { keyboardFocusClipView = obj; *stop = YES; } }]; if (keyboardFocusClipView) { NSView *view = keyboardFocusClipView.subviews[0]; [(NSTextView*)view setInsertionPointColor:cursorColor]; } }
两种方法的不同之处在于:方法一调用的前提,是输入框由无光标到有光标时才触发,如果在有光标的时候想改变光标的颜色,就只能使用方法二;方法二只有在输入框有光标的时候才会起作用,无光标的时候就没法触发。
所以两种方法配合使用,就可以完美实现不同Theme下光标颜色的切换。
转载请注明出处:http://blog.csdn.net/skynullcode
相关文章推荐
- 关于编译与链接
- 轻松学习C#的运算符
- [Cloud Networking Notes] Routing and Traffic Engineering
- cmmotionmaneger
- 网络基础
- 迷信的原因之我见
- No enclosing instance of type Demo06 is accessible.
- python爬虫实战(关于工作中遇到的问题)
- codeforce 599C Day at the Beach
- 学习笔记1:Struts 2框架的搭建
- Interview Q&A - 两个字符串整数相加返回和的字符串(C#)
- 网络安全资料
- 第一章 USB Type C的基本原理(连载一)
- apache2.2 虚拟主机配置详解
- iBatis.Net(C#)数据库查询
- 转:Nginx配置指令location匹配符优先级和安全问题
- 祸兮福兮?--疏忽引发的学习机遇
- 常见错误
- spark之RDD(四)
- redis中的数据结构基本的操作