我有一个透明的Web视图,它是一个大矩形。它加载的网页有较小的矩形,不会填满整个网页视图。因此,在那些没有被div占用的空间中,您可以通过Web视图查看后面的任何窗口或应用程序。虽然你可以透视,但你无法点击。 我需要能够点击其中没有活动内容的部分网页视图。 有什么想法吗?
我的一个想法是在Web视图的顶部有一个透明的nsview,拦截鼠标,获取坐标,然后在Web视图中引用该坐标,并查看那里是否有活动内容,如果有,则传递将事件鼠标按下到Web视图,但如果没有,则忽略它/传递它。这对我来说很有意义,但我不知道如何实现这一目标......
答案 0 :(得分:3)
您需要继承WebView
并实现hitTest:
方法。在您的方法中,您需要进行测试以查看鼠标是否位于Web视图的“活动”区域之一,如果不是,则返回视图的下一个响应者作为通过命中测试的视图。
//assume activeRect is some rect in your view that you want to accept mouse clicks on
- (NSView*)hitTest:(NSPoint)aPoint
{
if(NSPointInRect([self convertPoint:aPoint fromView:nil], activeRect))
{
//if the mouse is in an active area then just perform the default operation
return [super hitTest:aPoint];
}
//otherwise return the next responder
return (NSView*)[self nextResponder];
}