iphone - редът на събитието докосване (докосване).

Имам UIView и UIWebView.

UIWebView е дъщерен изглед на UIView.

UIWebView съдържа видеоклип в YouTube и е настроен така, че да позволява видеото да пасва на UIWebView.

Имам UITapGesture, свързан с родителския UIView за едно докосване, да речем, ако потребител докосне еднократно целия изглед, той ще извика A.

Така че, когато UIWebView зареди видеоклипа в YouTube, върху него има бутон, който чака потребителите да щракнат, за да го пуснат. Но сега, ако щракна върху бутона, youtube се възпроизвежда, но също така се извиква и A. Това е, което не искам.

Как трябва да го реша?

Мислех, че събитието докосване/докосване трябва да е в ред и ако бутонът бъде щракнат, той трябва да абсорбира събитието и да не дава повече UIView.

Също така се опитах да добавя друг UIView под UIWebView и да прикача този жест към основния изглед. Все още обаче не се получава.

Как мога да направя, за да оставя бутона над видеоклипа в YouTube независим?

Благодаря


person Jackson Tale    schedule 24.08.2011    source източник


Отговори (1)


Опитайте да добавите този код в .m файла на вашия изглед (ако използвате UIView, подкласирайте го):

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
    CGPoint p = [self convertPoint:point toView:webView];
    if ([webView pointInside:p withEvent:event]) {
        return [webView hitTest:p withEvent:event];
    }
    return [super hitTest:point withEvent:event];
}

Тъй като не съм пробвал този код, кажете ми, ако не работи. Все още има много начини за справяне със ситуацията. :)

person xuzhe    schedule 24.08.2011
comment
бихте ли ми казали друг начин, различен от изгледите на подкласове? - person Jackson Tale; 25.08.2011
comment
@JacksonTale Тъй като използвате UITapGesture, можете също да разберете къде потребителят е докоснал екрана, проверете дали точката е във вашия UIWebView, ако отговорът е ДА, можете просто да върнете функцията си за събитие при докосване, за да спрете по-нататъшни действия. - person xuzhe; 25.08.2011
comment
@xuzhe, но простото връщане не означава, че ще прехвърли събитието в уеб изгледа, нали? - person Jackson Tale; 27.08.2011
comment
Не е отговорност на UITapGesture да прехвърли събитието към UIWebView. Така че простото връщане е добре. - person xuzhe; 28.08.2011