我是新来的,请忍受我。在MacOS(不是iOS)上使用WKWebView / NSView / NSWindow的Xcode嵌入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]; }
如何禁用窗口中的所有鼠标交互,以使用户无法与视频交互或在WKWebView中初始化鼠标悬停。所以我想禁用鼠标单击和窗口/视图上的鼠标悬停操作。我在youtube上尝试了各种嵌入选项,但我认为需要在窗口/视图上完成。
答案 0 :(得分:1)
如果您真正想要的是禁用与窗口的所有交互,则可以将ignoresMouseEvent
属性设置为YES
。您可以通过NSWindow
或NSWindowController
子类来完成此操作:
@interface MyWindowController : NSWindowController
@end
@implementation MyWindowController
- (void)windowDidLoad {
self.window.ignoresMouseEvents = YES;
}
@end
请注意,这确实会禁用所有鼠标与窗口(包括标题栏)的交互。通常,您需要少一点侵略性的东西。
一种替代方法是将WKWebView
子类化,并覆盖从NSResponder
类继承的鼠标事件处理方法。
@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
这些事件将被吞噬,并且不会通过事件处理机制传播。