Cocoa 如何在NSView中显示闪烁的插入符号?
我正在构建一个自定义的NSView子类,用于显示和编辑的文本-我必须显示一个闪烁的插入符号-我在任何地方都找不到引用-有人能给我指出函数或引用吗?(在windows中,我会做ShowCaret——小菜一碟)。tia.为什么不使用Cocoa 如何在NSView中显示闪烁的插入符号?,cocoa,Cocoa,我正在构建一个自定义的NSView子类,用于显示和编辑的文本-我必须显示一个闪烁的插入符号-我在任何地方都找不到引用-有人能给我指出函数或引用吗?(在windows中,我会做ShowCaret——小菜一碟)。tia.为什么不使用NSTextView?您可以免费获得此行为。如果您确实需要这样做,那么您必须自己实现它。您的视图应该有一个布尔ivar来存储当前闪烁状态,您需要使用一个重复计时器在计时器方法中执行类似操作: - (void)updateCaret:(NSTimer*)timer {
NSTextView
?您可以免费获得此行为。如果您确实需要这样做,那么您必须自己实现它。您的视图应该有一个布尔ivar来存储当前闪烁状态,您需要使用一个重复计时器在计时器方法中执行类似操作:
- (void)updateCaret:(NSTimer*)timer
{
caretBlinkActive = !caretBlinkActive; //this sets the blink state
[self setNeedsDisplayInRect:[self caretRect]];
}
您需要实现caretRect
以返回当前插入符号矩形
在drawRect:
的实现中,需要优化绘图,以便只绘制脏rect,并使用caretBlinkActive
的值来绘制插入符号或不绘制插入符号
要首先创建计时器,请执行以下操作:
[NSTimer scheduledTimerWithTimeInterval:caretBlinkRate
target:self
selector:@selector(updateCaret:)
userInfo:nil
repeats:YES];
是的,您可以保证
NSTextView
在一个蓝鲸单元上的工作效果比从头开始构建的自定义视图要好。优秀的工程师在这方面花费了大量的工程时间。如果我想使用NSTextView,我会的。NSTextView不支持许多功能。确定,1。NSView不能在IPad上运行。2.我正在从Windows移植—我需要一个最小的兼容层—更改为NSView意味着一个大的重写。3.如果你有100多个子视图,apple文档建议不要使用NSView,我会的。4.毫无疑问,我会找到一些NSView不支持的功能,然后我就卡住了。5.还有更多,但这应该包括在内。真正的核心文本做所有我需要的,是相当容易的。我所要做的就是有一个闪烁的插入符号,但似乎我必须自己用计时器等等来完成。在上面的问题中,用NSTextView替换NSView您在原始问题中没有提到任何关于iPad的内容,您的问题被标记为cocoa
,您提到的NSView
,这是一个Mac API。人们建议NSTextView
,这有什么奇怪的吗?