在 WKWebView 中禁用鼠标单击和鼠标悬停
Disable Mouse Click and Mouse Over in WKWebView
我是新人,多多包涵。 Xcode 在 MacOS 上(不是 iOS)使用 WKWebView / NSView /NSWindow 嵌入 youtube 视频:
@property (assign) IBOutlet NSView *webNSView;
@property (assign) IBOutlet WKWebView *webView;
- (void)windowDidLoad {
WKWebView *webView = [[WKWebView alloc] initWithFrame:self.webNSView.frame];
webView.navigationDelegate = self;
NSURL *nsurl=[NSURL URLWithString:@"https://www.youtube.com/embed/C0DPdy98e4c"];
NSURLRequest *nsrequest=[NSURLRequest requestWithURL:nsurl];
[webView loadRequest:nsrequest];
[self.webNSView addSubview:webView]; }
如何在 window 中禁用所有鼠标交互,以便用户无法与视频交互或在 WKWebView 中初始化鼠标悬停。所以我希望在 window / 视图上禁用鼠标单击和鼠标悬停操作。我已经在 youtube 上尝试了各种嵌入选项,但我认为它需要在 window/view.
上完成
如果您真正想要禁用与 window 的所有交互,您可以将 ignoresMouseEvent
属性 设置为 YES
。您可以通过 NSWindow
或 NSWindowController
subclass:
@interface MyWindowController : NSWindowController
@end
@implementation MyWindowController
- (void)windowDidLoad {
self.window.ignoresMouseEvents = YES;
}
@end
请注意,这实际上会禁用所有鼠标与 window 的交互,包括标题栏。你通常想要一些不那么激进的东西。
另一种方法是子class WKWebView
并覆盖从 NSResponder
class.
继承的鼠标事件处理方法
@interface MyWebView : WKWebView
@end
@implementation MyWebView
- (void)mouseUp:(NSEvent *)event {}
- (void)mouseDown:(NSEvent *)event {}
- (void)mouseMoved:(NSEvent *)event {}
- (void)mouseEntered:(NSEvent *)event {}
- (void)mouseExited:(NSEvent *)event {}
@end
那些事件将被吞噬,不会通过事件处理机制传播。
我是新人,多多包涵。 Xcode 在 MacOS 上(不是 iOS)使用 WKWebView / NSView /NSWindow 嵌入 youtube 视频:
@property (assign) IBOutlet NSView *webNSView;
@property (assign) IBOutlet WKWebView *webView;
- (void)windowDidLoad {
WKWebView *webView = [[WKWebView alloc] initWithFrame:self.webNSView.frame];
webView.navigationDelegate = self;
NSURL *nsurl=[NSURL URLWithString:@"https://www.youtube.com/embed/C0DPdy98e4c"];
NSURLRequest *nsrequest=[NSURLRequest requestWithURL:nsurl];
[webView loadRequest:nsrequest];
[self.webNSView addSubview:webView]; }
如何在 window 中禁用所有鼠标交互,以便用户无法与视频交互或在 WKWebView 中初始化鼠标悬停。所以我希望在 window / 视图上禁用鼠标单击和鼠标悬停操作。我已经在 youtube 上尝试了各种嵌入选项,但我认为它需要在 window/view.
上完成如果您真正想要禁用与 window 的所有交互,您可以将 ignoresMouseEvent
属性 设置为 YES
。您可以通过 NSWindow
或 NSWindowController
subclass:
@interface MyWindowController : NSWindowController
@end
@implementation MyWindowController
- (void)windowDidLoad {
self.window.ignoresMouseEvents = YES;
}
@end
请注意,这实际上会禁用所有鼠标与 window 的交互,包括标题栏。你通常想要一些不那么激进的东西。
另一种方法是子class WKWebView
并覆盖从 NSResponder
class.
@interface MyWebView : WKWebView
@end
@implementation MyWebView
- (void)mouseUp:(NSEvent *)event {}
- (void)mouseDown:(NSEvent *)event {}
- (void)mouseMoved:(NSEvent *)event {}
- (void)mouseEntered:(NSEvent *)event {}
- (void)mouseExited:(NSEvent *)event {}
@end
那些事件将被吞噬,不会通过事件处理机制传播。