Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/43.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 检测到一个手指被物体抓住_Iphone_Objective C_Xcode_Ipad - Fatal编程技术网

Iphone 检测到一个手指被物体抓住

Iphone 检测到一个手指被物体抓住,iphone,objective-c,xcode,ipad,Iphone,Objective C,Xcode,Ipad,我试图得到一个图像,当用户触摸它时,它会摆动,一旦用户抬起手指,它就会停止 是否有一个手势,我可以用来检测手指何时放下,而不仅仅是在初次触摸时,或者当用户移动手指时 我试过一个长按手势,但并没有在手指在视图上的整个过程中调用它。有谁能帮我找到激活这个的最佳方法吗。现在我用touchesbeagin、touchesMoved、touchesEnd来做,但我想知道是否有更好的方法 如有任何建议,我们将不胜感激 谢谢简单的回答-您可以将图像设置为UIButton,并在触地时开始晃动,然后在触地内或触地

我试图得到一个图像,当用户触摸它时,它会摆动,一旦用户抬起手指,它就会停止

是否有一个手势,我可以用来检测手指何时放下,而不仅仅是在初次触摸时,或者当用户移动手指时

我试过一个长按手势,但并没有在手指在视图上的整个过程中调用它。有谁能帮我找到激活这个的最佳方法吗。现在我用touchesbeagin、touchesMoved、touchesEnd来做,但我想知道是否有更好的方法

如有任何建议,我们将不胜感激


谢谢

简单的回答-您可以将图像设置为UIButton,并在触地时开始晃动,然后在触地内或触地外停止晃动

苹果包含了演示使用UIResponder和UIGestureRecognitor方法的代码


这两种方法都适用于您所做的工作。

听起来您希望将UIgestureRecognitizer子类化,我记得,UIgestureRecognitizer获取
触摸开始:…
和相关方法。请阅读UIgestureRecognitor参考中有关子类化的说明。或者按照索曼的建议使用UIButton

编辑 根据这些评论,我对原来的问题有点误解,所以我将我的答案编辑成一个不同的解决方案,希望这个解决方案更清晰一些(并且回答了实际的问题,而不是我脑海中的问题)

长按手势是连续的(轻触手势不是)。这意味着,识别器回调将继续被调用,直到手势完成-直到释放“长按”才会发生。因此,下面应该做你想做的事情。注意:我认为您希望在识别长按时“开始摇晃”视图,然后在松开手指时“停止摇晃”视图。我只是假装你有这个功能。适当地替换

 - (void)handleLongPress:(UILongPressGestureRecognizer*)gestureRecognizer
{
    if (gestureRecognizer.state == UIGestureRecognizerStateBegan) {
        StartShakingView(gestureRecognizer.view);
    } else if (gestureRecognizer.state == UIGestureRecognizerStateEnded) {
        StopShakingView(gestureRecognizer.view);
    }
}

是的,我明白,但首先,我可以使用TouchBegin等手势吗?我在想,我只能用其中一个。。。这是真的吗?第二,我希望我的动画在手指放下的整个过程中都会发生,很可能不会有任何动作,那么手指放下时我该如何做呢?我没有尝试过将UIGestureRecognitor与UIResponder混合使用,但我不知道为什么不能将两者混合使用。这听起来像是你试图在按住触摸键的同时,根据一些连续的事件流触发动画?如果这是您的问题,那么我建议您在单独的线程上制作动画,并发送消息以启动和停止动画。您的动画将类似于UIActivityIndicator的使用方式。我没有这方面的例子,但搜索“背景动画”或类似内容应该会为您指明正确的方向。显然,默认情况下,这两种方法都无法协同工作,请看,这是我的问题,如果我能让它们协同工作,我很乐意去做。很好,我不知道这一点。您是否尝试过设置
UIgestureRecognitor.cancelsTouchesInView=FALSE?听起来可能就是这样。但是你用的是哪种手势识别器?你说的“当手势发出时完成摇晃”是什么意思?@jody:是的,很流畅。假设您想要跳板式的行为,而不是立即开始摆动。也许你可以将最短持续时间设置得很低?你可以始终将初始延迟设置为0,以便识别长按,然后它发生得“非常快”