题
是否有可能禁用所有的用户交互与web视图,除了滚动?我希望用户能够看到的页面(也可能是选择的东西),但不能点击链接/右键点击/刷新/聚焦表单字段/触发UI DOM事件(的onclick等)。
我看到这个问题我可以禁用右键点击选择,但不与表单元素和导航发送DOM事件帮助。
解决方案
您可以继承NSWindow和设置您的子类的web视图的窗口。然后,可以控制哪些事件被通过检测什么样的控制的受着鼠标事件发送到web视图。
这是非常强力,但将完全禁止任何鼠标事件,包括翻车等:
@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,然后禁用与完全的网络视图中的所有用户交互。我想你会调整网络视图的框架,使整个页面是可见的,然后让它滚动视图的内容视图。
您还可能能够继承的WebView和拦截点击拒绝某些动作,但我没有任何这方面的经验,我想这将是很难区分的一些行动,如选择,从别人(尤其是上下文菜单)。
希望帮助 - 好运
!您也许可以通过JavaScript这样做在页面上(通过所有链接,表格等迭代),并关闭它们,用 - [UIWebView的stringByEvaluatingJavaScriptFromString:]
不隶属于 StackOverflow