uiscrollview 内嵌 uiwebview,uiwebview 内又嵌入一个listbox


Q:uiscrollview中有多个uiwebview,左右滑动会切换uiwebview,

其中一个 uiwebview 中内嵌一个css写的listbox,listbox中有多张图片,左右滑动图片会切换。

如何区别这2种滑动,在listbox种滑动时不让uiscrollview也滑动,在webpage的其他地方左右滑动让uiscroolview做切换。


A:通过引入gestureRegnize来判断touch 点,用js获得uiwebview 处的元素,此处通过元素名称IMG及其源src来判断touch点是否落在listbox中,这个不是很好的办法,但暂时就想到这个方法。

        NSString *js = [NSString stringWithFormat:@"document.elementFromPoint(%f, %f).tagName", pt.x, pt.y];
        NSString * tagName = [webview stringByEvaluatingJavaScriptFromString:js];
        NSLog(@"tagName:%@",tagName);
        
       
        if([tagName isEqualToString:@"IMG"]){
            NSString *src = [NSString stringWithFormat:@"document.elementFromPoint(%f, %f).src", pt.x, pt.y];
            NSString * srcName = [webview stringByEvaluatingJavaScriptFromString:src];
            NSLog(@"srcName:%@",srcName);

        }

通过在或不在listbox,让scrollview的scroll功能enable或disable


2014-11-18

补充:

通过调用js来获得区域大小,并判断是否在其中

        NSString *scriptCode = @"(function(){ \
        var e=document.getElementById('%@');  \
        var l = 0;   \
        var t = 0;    \
        var w = e.offsetWidth;  \
        var h = e.offsetHeight; \
        while (e){ \
        l += (e.offsetLeft-e.scrollLeft+e.clientLeft); \
        t += (e.offsetTop-e.scrollTop+e.clientTop);  \
        e = e.offsetParent \
        } \
        return l+':'+t+':'+w+':'+h; \
        })();";

另一个js,判断父元素是否在其中

 
        NSString *scriptCode = @"(function(){ \
        var clickedElement=document.elementFromPoint(%f, %f); \
        var targetElement=document.getElementById('%@');  \
        var targetElement2=document.getElementById('%@');  \
        var e=clickedElement; \
        while (e){ \
            if(e==targetElement){ \
              return 1;  \
            }  \
            if(e==targetElement2){ \
                return 1;  \
            }  \
            e = e.offsetParent \
        } \
        return 0; \
        })();";
        
        NSString* jsScript=[NSString stringWithFormat:scriptCode, pt.x, pt.y,@"myCarousel",@"myCarousel_2"];
        NSString*jsRet=[webview stringByEvaluatingJavaScriptFromString:jsScript];





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值