Dan*_*nly 49 objective-c touch uigesturerecognizer
我有一个视图,我在这个视图中应用了一个UIPanGestureRecogniser:
UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panAnim:)];
[sliderView addGestureRecognizer:panGesture];
[panGesture release];
Run Code Online (Sandbox Code Playgroud)
我可以很好地检测和处理手势.但是,一旦手势结束,我希望启动另一种方法.
我知道有两种方法可以进行这种检测.touchesEnded与touchesCancelled然而,我发现,touchesCancelled获取,一旦触摸成为一种姿态,即我将我的手指足以保证手势调用,并呼吁touchesEnded很少,如果有的话,被调用.
我希望能够向左/向右平移,然后在手势结束时启动另一个函数调用.我该怎么做呢?
Jha*_*iya 135
可以通过检查其状态来检测平移手势结束事件UIGestureRecognizerStateEnded.
请查看以下代码.
-(void) panAnim:(UIPanGestureRecognizer*) gestureRecognizer
{
if(gestureRecognizer.state == UIGestureRecognizerStateEnded)
{
//All fingers are lifted.
}
}
Run Code Online (Sandbox Code Playgroud)
来自Apple文档
平移手势是连续的.当允许的最小手指数(minimumNumberOfTouches)移动到足以被视为平移时,它开始(UIGestureRecognizerStateBegan).当手指移动时,它会改变(UIGestureRecognizerStateChanged),同时至少按下最小数量的手指.当所有手指都被抬起时,它结束(UIGestureRecognizerStateEnded).
Was*_*hah 11
可以通过使用UIGestureRecognizerStateEnded或UIGestureRecognizerStateCancelled或检查其状态来检测平移手势结束事件UIGestureRecognizerStateFailed
请查看以下代码.
-(void) panGesture:(UIPanGestureRecognizer*) gestureRecognizer
{
if(gestureRecognizer.state == UIGestureRecognizerStateEnded || gestureRecognizer.state == UIGestureRecognizerStateFailed || gestureRecognizer.state == UIGestureRecognizerStateCancelled)
{
//code what you want.
}
}
Run Code Online (Sandbox Code Playgroud)
以上答案都是正确的,这只是Swift的更新版本.
斯威夫特3:
func panGesture(recognizer: UIPanGestureRecognizer) {
if recognizer.state == .ended {
// Do what you want
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
37273 次 |
| 最近记录: |