是否有可能禁用所有的用户交互与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:]

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top