Так как это лучший хит в Google ... предоставленный подход не сработал для меня, так как WKWebView перехватывает события мыши до того, как они достигают окна. Вместо этого мне пришлось создать подкласс WKWebView и выполнить работу там (например, Редактор фотографий Apple / WindowDraggableButton.swift ).
Я использую Xamarin, но код довольно прост ... вот важные биты:
// How far from the top of the window you are allowed to grab the window
// to begin the drag...the title bar height, basically
public Int32 DraggableAreaHeight { get; set; } = 28;
public override void MouseDown(NSEvent theEvent)
{
base.MouseDown(theEvent);
var clickLocation = theEvent.LocationInWindow;
var windowHeight = Window.Frame.Height;
if (clickLocation.Y > (windowHeight - DraggableAreaHeight))
_dragShouldRepositionWindow = true;
}
public override void MouseUp(NSEvent theEvent)
{
base.MouseUp(theEvent);
_dragShouldRepositionWindow = false;
}
public override void MouseDragged(NSEvent theEvent)
{
base.MouseDragged(theEvent);
if (_dragShouldRepositionWindow)
{
this.Window.PerformWindowDrag(theEvent);
}
}