具有自定义HitTest的UIWebView子类

时间:2011-07-25 17:36:34

标签: ios uitableview uiwebview

我在许多UITableViewCell对象中有一个UIWebView,它们位于UITableView中。当您尝试滚动UITableView时,有时触摸将“卡在”UIWebView对象上。但是,我仍然需要能够单击UIWebView对象中的链接。所以,我创建了一个子类:

#import "SecretWebView.h"


@implementation SecretWebView

-(UIView*)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
    if ([[event allTouches] count] == 0) {
        return self.superview;
    } else {
        return self; //I have tried many things here...
    }
}

@end

我的希望是,当没有点击链接时我可以返回superview(即TableViewCell),然后返回通常会返回的任何内容,所以我仍然可以点击链接并获得相同的预期行为。除了“else”子句之外,一切正常,UIWebView允许点击链接。

在代码中,您会看到我评论的位置“我在这里尝试过很多东西......”,其中包括以下内容:

return [super hitTest:point withEvent:event];
return self;
return origObj; //where origObj was created in first line from the [super ...] call.

请帮帮我!如何让它忽略任何操作,只需点击链接即可!?

1 个答案:

答案 0 :(得分:1)

一般来说, - [UIView hitTest:withEvent:]将以递归方式查看其子视图,并可能返回自身或其任何子视图。 在你的情况下,UIWebview的命中很可能是由它的一个子视图本身处理的。通过调用[super hitTest:withEvent:],您将获得正确的子视图返回。

请参阅this question了解hitTest:withEvent:的工作原理。