首先关闭;我是Cocoa的一个完全新手,所以请跟我一起询问我肯定是一个愚蠢和完全的新问题。

我的情况如下:我想扩展NSTextField的功能。我希望实现的目标是:

改变插入符的外观。

检测文本何时达到一定数量的字符,然后在该限制之后对文本进行不同着色。 *

令我非常沮丧的是,在花了相当长的一段时间后,我发现数百个点击简单地说“Sublass NSTextField并使用此代码。”,并且我发现自己无法确切知道如何做到这一点。

如果有人能给我一个实现上面列出的两件事之一的子类的工作示例,以及关于如何实现代码的指令*,我将非常感激,因此我可以尝试找出它是如何工作的看一些实际的实时代码。


我对我迟到的回应非常抱歉!

向所有人道歉。我家里有一个绞痛的婴儿,而且你(或者至少那些有孩子的人)可以想象这会花费你很多的时间。谢谢大家的回复。

我发现我的主要问题之一是我对代表和出路没有足够的了解。我已经购买了这里推荐的书(以及许多其他地方。我收集了一些“圣经”),我正在调查它,因为我们在这几天的几个无声的时间里说话。 :)

但是虽然我可以看到它对我来说是一个不可或缺的工具但我仍然从学习实例而不是阅读理论中获得最多的理解*所以如果有人创建一个具有适当子类的项目,我将非常感激。相关的课程,因为我明白我可能不应该扩展NSTextfield类?

我会立即将Mark Thalmans的帖子标记为答案,因为我确信这是一个适当的“傻瓜”。回复,但我会坚持几天,因为我真的很喜欢一个文件来仔细阅读。但我不是忘恩负义!

哦,而且;当我说我在实际知道的语言中没有那么无用时,请相信我们。只是这些与Interface Builder和GUI连接到代码的概念对我来说是未知的。我通常只是编写代码并保留它。


*是的,我的第一个小培训项目确实是推特实用工具。

*喜欢孩子

*并不是说阅读理论对我来说也没有太大的价值。如果没有Colin Moock AS3的权威指南,我就不会在那里。

有帮助吗?

解决方案

马丁,

我从“新文件”开始对话框并选择“Cocoa”在左边然后是Objective-C类。

这将生成以下代码,不带注释。然后你需要做的就是改变“@ interface”中的NSObject。标题的行到“NSTextView”你有一个工作的子类。如果您使用的是XCode 3.0,则可以转到Interface Builder并将NSTextField的类更改为“MyTextView”。

你还应该选择Aaron Hillegass的书“Mac OS X的Cocoa Programming,第三版”。如果你还没有为Leopard更新它。

祝你好运。


#import <Cocoa/Cocoa.h>


@interface MyTextView : NSTextView {
 // Outlets & Members go here
}
// Actions & messages go here
@end


#import "MyTextView.h"


@implementation MyTextView

@end

其他提示

setInsertionPointColor:将负责设置插入符颜色,使用委托方法将是在字符数更改后为文本着色的最佳方法。一般来说,Cocoa中的很多类都是这样的;您可以对它们进行子类化,但需要更改的大多数功能都在委托方法中。

NSTextField 很特别,因为它实际上并没有实现文本编辑。这是由共享(每个窗口) NSTextView 完成的,称为字段编辑器。您可以为给定的 NSTextField 提供特殊的字段编辑器。这是通过继承 NSWindow (!)并覆盖 -fieldEditor:forObject:来规范化完成的。不过,当我查看时,我发现了 NSTextFieldCell &#8217; -setUpFieldEditorAttributes:方法,它看起来好像可以返回一个不同的字段编辑器。它被递交了。

推荐阅读: Cocoa的控制和单元编程主题文本系统概述

  1. 如果你真的需要对它进行子类化,你必须继承 NSTextFieldCell 。关于 NSCells 的信息是在线提供

  2. 如果不是绝对必要,不要对单元格进行子类化。使用委派方法

  3. 至少可以使用更改颜色 NSTextField 的绑定,使用这些。

您也可以获得格式化程序所需的一些功能。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top