首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >何时在iPhone中调用已取消的触摸方法?

何时在iPhone中调用已取消的触摸方法?
EN

Stack Overflow用户
提问于 2011-04-21 12:50:15
回答 3查看 14.1K关注 0票数 20

我能够理解,当用户只触摸视图时,就会调用触摸开始和结束。当用户在视图上滑动他们的手时,touches方法被调用。但是何时调用已取消的触摸,或者通过对user执行什么操作来调用此方法?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-06-26 20:49:10

我认为调用touchesCancelled (至少从iOS 3.2开始)最常见的原因可能是UIGestureRecognizer对手势的识别。如果您的视图附加了任何类型的手势识别器,那么提供touchesCancelled方法的自定义实现通常是非常重要的-请注意,这包括使用手势识别器的现成视图,包括UIScrollView。

默认情况下,手势识别器在识别时取消对点击测试视图的触摸传递,尽管可以禁用此行为。这涉及到向该视图发送touchesCancelled消息,很可能是在touchesBegan或touchesMoved消息之后。如果您的触摸处理代码依赖于在touchesEnded方法中实现的代码,则这可能永远不会触发,并且可能会发生某种严重的问题,因此需要正确处理touchesCancelled中的任何细节。

手势识别器功能的细节显然比我在这里提到的要复杂得多--我强烈建议阅读苹果的Gesture Recognizers文档。

此外,请查看手势识别器上的WWDC videos (从2010年开始)。

票数 34
EN

Stack Overflow用户

发布于 2011-07-15 20:57:47

注意:如果在touchesBegan之后开始UIView动画,触摸也会被取消。要防止出现这种情况,请确保包含UIViewAnimationOptionAllowUserInteraction:

例如:

代码语言:javascript
复制
[UIView animateWithDuration:0.3 delay:0 options:UIViewAnimationOptionAllowUserInteraction animations:^{
            self.aView.hidden = NO;
            self.aView.alpha = 1;
        } completion:nil];
票数 14
EN

Stack Overflow用户

发布于 2019-05-17 08:59:32

我在UIScrollView下的一个视图上处理touchesBegan()/touchesMoved(),这很有挑战性。当我握手的时候,我的触摸一直被某个地方取消(不知何故,单点触摸就可以了),我正在研究如何避免被取消。我知道了,在UIScrollView上有一个属性Can Cancel On Scroll,如果你的情况和我的情况相似,你可以勾选它以防止被取消。

听起来有很多情况下你的触摸被取消了,所以我的答案只是其中之一。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5739675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档