iphone – UIGestureRecognizer是否在UIWebView上工作?

iphone – UIGestureRecognizer是否在UIWebView上工作?,第1张

概述我试图得到一个UIGestureRecognizer工作与UIWebview是UIScrollView的子视图。这听起来很奇怪,但是当numberOfTouchesRequired设置为2时,选择器触发,但是当numberOfTouchesRequired设置为1时,选择器不会触发。 这里是我的代码: UITapGestureRecognizer *tap1 = [[UITapGestureRec 我试图得到一个UIGestureRecognizer工作与UIWebvIEw是UIScrollVIEw的子视图。这听起来很奇怪,但是当numberOftouchesrequired设置为2时,选择器触发,但是当numberOftouchesrequired设置为1时,选择器不会触发。

这里是我的代码:

UITapGestureRecognizer *tap1 = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(select1:)];    tap1.numberOftouchesrequired = 2;    tap1.numberOfTapsrequired = 1;    tap1.delegate = self;    [self.ans1WebVIEw addGestureRecognizer:tap1];    [tap1 release];- (voID) select1:(UILongPressGestureRecognizer *)sender {    //Do Stuff}

我已经通过使用苹果示例UIGestureRecognizer和插入一个webvIEw在他们的笔尖证实了这一点。他们的tap代码无处不在,但在webvIEw的区域内。

解决方法 从我看到,UIWebVIEw不能很好地与其他人玩。对于手势识别器,您可以尝试返回YES从:

- (BOol)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer;

我不得不向后兼容3.0,所以我最后做所有的手势处理与UIWebVIEw的JavaScript。不是一个好的解决方案,但它的工作,我的需要。我能够捕捉长按一个元素,以及点击,刷卡,捏和旋转。当然,我只使用本地内容。

编辑:

您可以查看PhoneGap中的向UIWebVIEw的委托发送消息的示例。简而言之,您使用document.location =“myscheme:mycommand?myarguments”,然后解析此委托回调中的命令和参数:

-(BOol) webVIEw:(UIWebVIEw *)inWeb shouldStartLoaDWithRequest:(NSURLRequest *)inRequest navigationType:(UIWebVIEwNavigationType)inType {  if ( [[[inRequest URL] absoluteString] hasPrefix:@"myscheme:"] ) {    //.. parse arguments    return NO;  }}

你可以在PhoneGap代码中看到他们设置了一个队列和定时器来发送消息。根据你的用法,你可能需要做同样的事情。有关这个主题的其他问题。

这里是Event Handling文档。在我的情况下,我添加事件监听器从文档< body onload =“myloader();”>

function myloader() {    document.addEventListener( 'touchcancel',touch_cancel,false );    document.addEventListener( 'touchstart',touch_start,false );    document.addEventListener( 'touchmove',touch_move,false );    document.addEventListener( 'touchend',touch_end,false );};

实际的事件处理很大程度上取决于你的需要。每个事件处理程序将接收一个带有touches属性的TouchEvent,其中每个项目都是Touch.您可以在touchstart处理程序中记录开始时间和位置。如果触摸移动到远或错误的时间量过去,它不是一个长的触摸。

WebKit可能会尝试处理长触摸开始选择和复制。在你的事件处理程序中,你可以使用event.preventDefault();停止默认行为。我还发现-webkit-user-select:none CSS属性方便的一些事情。

var touch = {};function touch_start( event /*touchEvent*/ {  event.preventDefault();  touch = {};  touch.startX = event.touches.item(0).pageX;  touch.startY = event.touches.item(0).pageY;  touch.startT = ( new Date() ).getTime();}

这只是我使用JavaScript的第二个项目。你可以在别的地方找到更好的例子。

正如你可以看到,这是没有快速的答案你的问题。我对我的结果很满意。我正在使用的HTML没有一个或两个链接之外的交互式元素。

总结

以上是内存溢出为你收集整理的iphone – UIGestureRecognizer是否在UIWebView上工作?全部内容,希望文章能够帮你解决iphone – UIGestureRecognizer是否在UIWebView上工作?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1046091.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存