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 当用作自定义工具栏视图的子视图时,NSButtons会保留人工制品_Cocoa_Nsview_Nsbutton - Fatal编程技术网

Cocoa 当用作自定义工具栏视图的子视图时,NSButtons会保留人工制品

Cocoa 当用作自定义工具栏视图的子视图时,NSButtons会保留人工制品,cocoa,nsview,nsbutton,Cocoa,Nsview,Nsbutton,我将在一个简单的矩形视图中放置几个按钮,该视图充当自定义工具栏。在第一次渲染时,按钮/视图按预期显示,但每次按下按钮(有时根本没有鼠标交互)都会出现人工制品 之前 之后 我可以通过在所有动作和对焦方法中调用[self.toolbarView setNeedsDisplay:YES]来消除这些伪影,但这似乎是一个黑客行为,有没有干净的方法来处理这个问题?您只需尝试在IB中将按钮的对焦环设置为“无”。这是一个初学者的问题。在drawRect方法中 - (void)drawRect:(NSRect

我将在一个简单的矩形视图中放置几个按钮,该视图充当自定义工具栏。在第一次渲染时,按钮/视图按预期显示,但每次按下按钮(有时根本没有鼠标交互)都会出现人工制品

之前

之后


我可以通过在所有动作和对焦方法中调用[self.toolbarView setNeedsDisplay:YES]来消除这些伪影,但这似乎是一个黑客行为,有没有干净的方法来处理这个问题?

您只需尝试在IB中将按钮的对焦环设置为“无”。

这是一个初学者的问题。在drawRect方法中

- (void)drawRect:(NSRect)dirtyRect
我使用param
dirtyRect
来绘制视图的轮廓,假设它是视图的边界,而实际上只有按钮周围的区域在按下时变脏了。“人工制品”实际上是我的轮廓画错了地方

通过正确使用视图的边界

NSRect drawingRect = [self bounds];

“人工制品”不再出现。

告诉您如何创建按钮和搜索字段按钮是常规的NSButtons,带有png图像设置的图像属性,没有什么异常。NSSearchField也有库存。问题似乎在于将它们作为NSView的子视图放置,其中drawRect:方法绘制渐变。焦点环当前设置为“无”,将其设置为“默认”也不会改变有问题的行为。