あなたはNSWindowのをサブクラス化し、WebViewのの窓としてのあなたのサブクラスを設定することができます。マウスイベントの影響を受けるコントロールの種類を検出することによって、WebViewに送信されるイベントを制御できます。
これはかなり強引ですが、完全にロールオーバーなどを含む任意のマウスイベントを、無効になります:
あなたはそれが簡単にナビゲーションリンクをクリックして無視するのWebViewのために十分である、「すべてのユーザーの操作を無効に」したい
@interface WebViewEventKillingWindow : NSWindow
{
IBOutlet WebView* myWebView;
}
@end
@implementation WebViewEventKillingWindow
- (void)sendEvent:(NSEvent*)event
{
NSView* hitView;
switch([event type])
{
case NSScrollWheel:
case NSLeftMouseDown:
case NSLeftMouseUp:
case NSLeftMouseDragged:
case NSMouseMoved:
case NSRightMouseDown:
case NSRightMouseUp:
case NSRightMouseDragged:
hitView = [myWebView hitTest:[event locationInWindow]];
if([hitView isDescendantOf:myWebView] &&
!([hitView isKindOfClass:[NSScroller class]] ||
[hitView isKindOfClass:[NSScrollView class]]))
{
return;
}
break;
default:
break;
}
[super sendEvent:event];
}
@end
等々?または、実際にカーソルをリンク上に置いても変化しないようにしたいのですか?前者が問題ない場合は、適切なWebViewデリゲートメソッドを実装して、ナビゲーションの試行を無視します。 –
現代のウェブページの問題は、リンクをたどるだけでなく、あらゆる種類のものをクリックで変更できることです。私は事実上、ページを見ることを除いてページとのユーザーのやり取りを無効にしたい。 –