Iphone 有人不打电话吗???或者随机被呼叫
如果我把手指从第一次触摸中抬起,那么它会很好地识别下一次触摸。只有当我持续保持第一次触地,然后尝试用不同的手指同时触碰不同的区域时。然后,它将错误地将第二次触摸注册为再次进行第一次触摸 更新这与触摸有关。在最后一次触摸结束之前,不要调用触摸键(不管你是否在最后一次触摸结束之前已经有5次触摸结束……最后一次触摸结束后,它会调用所有触摸键结束)Iphone 有人不打电话吗???或者随机被呼叫,iphone,multi-touch,uitouch,touchesbegan,Iphone,Multi Touch,Uitouch,Touchesbegan,如果我把手指从第一次触摸中抬起,那么它会很好地识别下一次触摸。只有当我持续保持第一次触地,然后尝试用不同的手指同时触碰不同的区域时。然后,它将错误地将第二次触摸注册为再次进行第一次触摸 更新这与触摸有关。在最后一次触摸结束之前,不要调用触摸键(不管你是否在最后一次触摸结束之前已经有5次触摸结束……最后一次触摸结束后,它会调用所有触摸键结束) 设置多点触控 在Interface Builder中,它是“已启用用户交互”下的“多点触摸”复选框。无论出于何种原因,只有当触摸在scrollview中时,
设置
多点触控
在Interface Builder中,它是“已启用用户交互”下的“多点触摸”复选框。无论出于何种原因,只有当触摸在scrollview中时,touchesEnded才会延迟。如果a)禁用滚动视图的滚动;或者b)不要使用scrollview,那么touchesEnded将立即交付 我听说有些人在哪里截获了sendEvent,但这对我来说似乎很粗略,我真的不想搞乱响应链,因为sendEvent处理了大量事件
还有其他想法吗?有没有人将UIWindow子类化,尝试以这种方式拦截触摸?非常感谢您提供的任何输入。滚动视图有一个属性
delaysContentTouches
,默认设置为YES
。它将延迟所有触摸事件,直到它确定滚动手势。我知道这个问题有点老了,但我想我会将我的经验分享给任何一个偶然发现这条线索寻找答案的人,就像我刚刚遇到的一样
我已经为这个问题挣扎了几个小时,我能想到的唯一解决方案是删除我正在使用的任何UIGestureRecognitor对象
在我的设置中,我使用平移和点击识别器来捕捉这些手势,并使用touchsbegind和touchsended来处理任何标准的触摸事件。直到我删除UIGestureRecognizer对象,第二次触摸结束时才再次调用touchesEnded方法。具体而言,是pan识别器导致了这些问题
我不完全确定这是否适用于本例,但它解决了我遇到的问题。我今天遇到了这个问题(或者更确切地说,我今天遇到了这个问题!)
我所看到的是:
- 带手指的触摸屏1
- 触碰引发了火灾
- 带手指的触摸屏2
- 触碰引发了火灾
- 释放指2
- 什么也没发生
- 松开手指1
- 触火
- 触火
gestureRotation = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(gestureRotation_Callback:)];
[gestureRotation setDelegate:self];
gestureRotation.cancelsTouchesInView = FALSE;
gestureRotation.delaysTouchesEnded = FALSE; // <---- this line!!
[self.view addGestureRecognizer: gestureRotation];
[gestureRotation release];
gestureRotation=[[UIRotationGestureRecognitizer alloc]initWithTarget:self action:@selector(gestureRotation\u回调:)];
[gestureRotation setDelegate:self];
gestureRotation.cancelsTouchesInView=FALSE;
gestureRotation.delaystouchesend=FALSE;// 我刚刚遇到了这个问题,在ScrollView中的按钮上永远不会调用touchSended
。根据Ovidiu的回答,我发现手动设置ScrollView的ContentOffset是导致问题的原因。大概是将contentOffset设置为我原来的方式,这会让ScrollView混淆我是想按下按钮还是滚动视图
让偏移量保持在0,0
可以解决问题。我找到了另一种选择
在触摸开始
且CGPoint
未根据触摸移动
移动后,调用触摸取消
但是,如果CGPoint
根据touchesMoved
更改,则调用touchesend
我创建了一个简单的测试项目,似乎每次举起手指时都会调用touchesEnded…Vladimir,你介意把你的代码示例发布到某个地方吗,这样我就可以看到不同之处了?无论出于何种原因,我所有的touchesEnded都会在稍后同时被调用,而不是在它们实际发生的时候。顺便说一句,在我的程序中,触摸都在滚动视图中的UIImageView上,如果这有什么不同的话,所有这些都在UIView中Vladimir,这可能与滚动视图中的所有UIImageView有关吗?在scrollview外部,他们可以立即发送touchesEnded消息,但在scrollview内部,他们不会立即发送消息。这是不是因为某种原因被延迟了,或者它没有被正确地发送到响应链上?tewha,你可能在这里走对了轨道。。。我正在代码中创建UIImageView,并在设置过程中设置MultipleTouched。出于某种原因,我不确定它是否设置正确。我在其他地方读到,如果MultipleTouchEnabled未设置为YES,则在最后一次触摸结束之前(与我的错误完全匹配!)不会调用touchesend。不过,只需检查是否已启用所有选项,并确保MultipleTouchEnabled对所有选项都是YES:(这可能与scrollview中的所有UIImageView有关吗?在scrollview之外,它们可以正常工作,但在scrollview中,它们不会立即发送消息。
gestureRotation = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(gestureRotation_Callback:)];
[gestureRotation setDelegate:self];
gestureRotation.cancelsTouchesInView = FALSE;
gestureRotation.delaysTouchesEnded = FALSE; // <---- this line!!
[self.view addGestureRecognizer: gestureRotation];
[gestureRotation release];