我想创建一种桌面小部件,并希望它非常易于通过HTML/CSS设置样式。我决定将WebView用于此任务。

我有一个无边界的NSWindow,里面有一个WebView。我想使用鼠标使其可拖动(因为可以使用其标题来拖动任何普通窗口,但是可以通过单击WebView内的任意位置来拖动它)。尝试子类化WebView并覆盖mouseDownmouseDragged事件,但这没有用(出于明显的原因)。

当然,我可以在WebView上方创建一个透明 View 来解决该问题,但我确实想找到一种更好的方法。有人知道如何做到这一点吗?

最佳答案

通过重写父- (void)sendEvent:子类中的NSWindow方法解决了该问题,如下所示:

//Overriding mouse events
- (void)sendEvent:(NSEvent *)theEvent
{
    if ([theEvent type] == NSLeftMouseDown)
    {
        [self mouseDown:theEvent];
    }
    else if ([theEvent type] == NSLeftMouseDragged)
    {
        [self mouseDragged:theEvent];
    }
    else
    {
        [super sendEvent:theEvent];
    }
}

我猜这是最好的解决方案。

10-08 06:37