这里是我的代码:
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上工作?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)