我有一个静态NSTextField
,它在我的OS X应用中覆盖了一条大错误消息。我试图让它允许用户点击它下面的控件。
在IB中,我取消选中“已启用”,并且我已选中“拒绝第一响应者”
我也在代码中完成了它,因为它不起作用:
[largeErrorText setEnabled:NO];
[largeErrorText setRefusesFirstResponder:YES];
但是,它正在妨碍与其下方的对象进行交互。任何想法可能是什么?
答案 0 :(得分:21)
我发现使对象对单击透明的唯一方法是将该对象子类化(在您的情况下是NSTextField)并覆盖返回nil的hitTest方法。这样NSTextField就不会响应点击,因此下面的NSView将响应点击。
- (NSView*)hitTest:(NSPoint)aPoint
{
return nil;
}
答案 1 :(得分:0)
我假设您正在描述如下图所示的场景:
内部红色矩形是NSTextField
标签的框架轮廓,您说即使您已禁用文本字段并设置拒绝第一响应者,您的点击也不会转到{ {1}}?
此设计方案描述了一种称为“重叠兄弟视图”的条件。如果可能的话,我通常会尽量避免这种情况。如果不能,则可以确保NSButton
标签位于您希望能够与之交互的所有其他UI对象的“后面”,从而获得所需的行为。您可以通过选择标签并选择编辑器>来实现。安排>发送回。这将确保按钮位于文本字段的前面,以便它可以正确拦截鼠标事件。