Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa 如何在NSView中显示闪烁的插入符号?_Cocoa - Fatal编程技术网

Cocoa 如何在NSView中显示闪烁的插入符号?

Cocoa 如何在NSView中显示闪烁的插入符号?,cocoa,Cocoa,我正在构建一个自定义的NSView子类,用于显示和编辑的文本-我必须显示一个闪烁的插入符号-我在任何地方都找不到引用-有人能给我指出函数或引用吗?(在windows中,我会做ShowCaret——小菜一碟)。tia.为什么不使用NSTextView?您可以免费获得此行为。如果您确实需要这样做,那么您必须自己实现它。您的视图应该有一个布尔ivar来存储当前闪烁状态,您需要使用一个重复计时器在计时器方法中执行类似操作: - (void)updateCaret:(NSTimer*)timer {

我正在构建一个自定义的NSView子类,用于显示和编辑的文本-我必须显示一个闪烁的插入符号-我在任何地方都找不到引用-有人能给我指出函数或引用吗?(在windows中,我会做ShowCaret——小菜一碟)。tia.

为什么不使用
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
,这有什么奇怪的吗?