我有开始播放声音时用户触摸的UIView并改变到不同的音调作为用户滑动手指在屏幕上的应用程序。当用户提起手指的声音停止。

我使用的touchesBegan,移动和截止活动此。

我的问题是触摸端(和/或取消)有时不能正常发射和声音继续播放,手指从屏幕提升甚至之后。

因此,作为一种变通方法,我想实现一个计时器,将检查触摸屏上的号码,如果是零,它会检查并停止audioplayer如果播放。

我一直在寻找一些代码,可以让我像

触摸次数

UITouch *触摸= [自getAllTouchesonScreen];

或东西:)

有帮助吗?

解决方案

截至倒是有时事件不会被解雇。

我曾尝试取消触摸设置断点和触摸结束事件,而且有时犯规命中。

试着从苹果网站GLPaint示例程序,并尝试了的NSLog截至toches做在屏幕上一些快速图纸和快速抬起手指,像扔手指关闭屏幕。

您会明白我的意思。我给这当前解决方案涉及加速度计:)

提示:我使用它来找到所有事件:(无效)的SendEvent:(*的UIEvent)事件

其他提示

NSSet *allTouches = [event allTouches];
for(GLuint index = 0; index < [allTouches count]; ++index)
{
    UITouch *touch = [[allTouches allObjects] objectAtIndex:index];
    if([touch phase] != UITouchPhaseCancelled)
    {
        CGPoint touchPoint = [touch locationInView:self];
        //do something with touchPoint that has state [touch phase]
    }
}

您可以使用在所有触摸事件的功能(的touchesBegan,touchesEnded,touchesMoved)这个代码,并可以算接触和了解他们的状态。

不要忘记touchesCanceled。当触摸结束了那里,我想你会找到一些失踪触摸添加此功能/方法NSLog的和它。

如果你正在寻找一个水龙头计数 - 在同一个地方攻不止一次没有太多移动手指 - 您可以通过得到它:

-(void)iPhoneTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

UITouch *touch = [touches anyObject];
CGPoint touchPosition = [touch locationInView:self];
lastTouchTime = [touch timestamp];
myTouchCount = [touch tapCount];

但我这样做,也是用手工touchesMoved来看看它是如何移动的距离和取消如有水龙头搬到太远双/三自来水的能力,并计数水龙头只要你在一个有效的TAP状态是。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top