UIWebView подкласс с пользовательским HitTest - PullRequest
0 голосов
/ 25 июля 2011

У меня есть UIWebView во многих объектах UITableViewCell, которые живут в 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

Я надеялся, что смогу вернуть суперпредставление (т. Е. 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 Ответ

1 голос
/ 14 февраля 2012

Вообще говоря, - [UIView hitTest: withEvent:] рекурсивно изучит свое подпредставление и может вернуть себя или любое из его подпредставлений. В вашем случае удар UIWebview, скорее всего, будет обрабатываться одним из его подпредставлений, а не им самим. Вызвав [super hitTest: withEvent:], вы получите правильное возвращенное подпредставление.

См. этот вопрос о том, как hitTest: withEvent: работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...