MacOS 开发
来源:互联网 发布:犀牛软件版本分析 编辑:程序博客网 时间:2024/06/05 18:43
关键词:MacOS 开发 , NSTextField,doCommandBySelector,isValidObject,NSControlSubclassNotifications,NSControlTextEditingDelegate,label
- 创建
- 特殊的 NSTextField Label
- NSControlSubclassNotifications
- NSControlTextEditingDelegate
- 自定义光标等
- 1需要创建继承自 NSSearchFieldCell 的子类修改某些方法
- 2需要创建继承自 NSSearchField 的子类实现下面方法来修改cell即可
- 参考资料
创建
- 比起 UITextField 可以输入多行
- (void)addTextField{ NSTextField *field0 = [[NSTextField alloc]initWithFrame:NSMakeRect(100, 100, 100, 100)]; [self.window.contentView addSubview:field0]; field0.backgroundColor = [NSColor cyanColor]; field0.textColor = [NSColor magentaColor]; field0.bordered = NO;//无边框 field0.delegate = self;}
特殊的 NSTextField – Label
文章请戳这里:
http://blog.csdn.net/lovechris00/article/details/77977541
NSControlSubclassNotifications
- 这里的三个方法,跟 UITextField 代理中常用的三个方法。不用同意代理就可以执行,这个挺好:
#pragma mark - NSControlSubclassNotifications- (void)controlTextDidBeginEditing:(NSNotification *)obj { NSTextField *field = obj.object; NSLog(@"controlTextDidBeginEditing : %@",field.stringValue);}- (void)controlTextDidEndEditing:(NSNotification *)obj { NSTextField *field = obj.object; NSLog(@"controlTextDidEndEditing : %@",field.stringValue);}- (void)controlTextDidChange:(NSNotification *)obj { NSTextField *field = obj.object; NSLog(@"controlTextDidChange : %@",field.stringValue);}
NSControlTextEditingDelegate
#pragma mark - NSControlTextEditingDelegate//点击 field 并准备输入第一个字母时。- (BOOL)control:(NSControl *)control textShouldBeginEditing:(NSText *)fieldEditor{ return YES;}//不再填写这个 field(如:去填写另外一个 field 的时)调用。如果文字没有改变,就不会调用。- (BOOL)control:(NSControl *)control textShouldEndEditing:(NSText *)fieldEditor{ return YES;}//输入文字后,在 EndEditing 之前调用。如果文字没有改变,就不会调用。//返回 NO 时,这个窗口不会响应其他的点击事件(不能去填别的)。- (BOOL)control:(NSControl *)control isValidObject:(nullable id)obj{ return YES;}//被其他方法调用时,如:点击 delete 按钮,commandSelector 为 deleteBackward:. tab:insertTab: 。//返回 YES 时,delete、tab 这些方法调用失败。所以需要返回 NO。- (BOOL)control:(NSControl *)control textView:(NSTextView *)textView doCommandBySelector:(SEL)commandSelector{ return YES;}- (BOOL)control:(NSControl *)control didFailToFormatString:(NSString *)string errorDescription:(nullable NSString *)error{ return YES;}- (void)control:(NSControl *)control didFailToValidatePartialString:(NSString *)string errorDescription:(nullable NSString *)error{ NSLog(@"didFailToValidatePartialString : %@",string);}- (NSArray<NSString *> *)control:(NSControl *)control textView:(NSTextView *)textView completions:(NSArray<NSString *> *)words forPartialWordRange:(NSRange)charRange indexOfSelectedItem:(NSInteger *)index{ NSLog(@"completions : %@",words); return words;}
其实,我不知道最后三个方法怎么用。。。。。
自定义光标等
方法一:
参考:http://blog.csdn.net/skynullcode/article/details/49963257
遍历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]; }}
方法二:
参考(内附demo):http://www.tanhao.me/pieces/1580.html/
1、需要创建继承自 NSSearchFieldCell 的子类,修改某些方法;
//通过代码实例化- (id)init{ self = [super init]; if (self) { [self setUp]; } return self;}//通过xib实例化- (id)initWithCoder:(NSCoder *)aDecoder{ self = [super initWithCoder:aDecoder]; if (self) { [self setUp]; } return self;}- (void)setUp{//可以写你需要的设置}//重写该方法实现对光标颜色的修改// NSSearchField获取焦点,要显示光标的时候,都会调用该方法。- (NSText *)setUpFieldEditorAttributes:(NSText *)textObj{ NSText *text = [super setUpFieldEditorAttributes:textObj]; [(NSTextView*)text setInsertionPointColor:[NSColor whiteColor]]; return text;}
2、需要创建继承自 NSSearchField 的子类,实现下面方法来修改cell即可。
+ (void)setCellClass:(Class)factoryId{ [super setCellClass:[THSearchFieldCell class]];}+ (Class)cellClass{ return [THSearchFieldCell class];}
参考资料
- TH:自定义NSSearchFiled样式
http://www.tanhao.me/pieces/1580.html/
阅读全文
0 0
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- MacOS 开发
- HTML和CSS基础2
- Zxing实现二维码
- c++常用头文件
- java socket-3--多客户端与服务器的交互
- 多个session共享数据如何实现
- MacOS 开发
- LeetCode题解 week2(2)
- Spring Boot第四弹:Spring Boot之@Value和@ConfigurationProperties
- Day12 Servlet
- 文章标题
- 用C语言建立链表并进行基础操作
- Unity前期学习的内容,以及一些可能遇到的问题
- 图像语义分割:从头开始训练deeplab v2系列之四【nyu v2数据集】
- 46muduo库使用示例(五)