Iphone UILongPressGestureRecognitor不工作
我正在尝试创建一个应用程序,当启动UILongPressGestureRecognitor手势时,可以拖放UIButtons。事实上,我的应用程序在任何iPad上都运行良好。它只会在iPhone上产生问题,并且低于iOS 5.0,因为它在配备iOS 5.0的iPhone上工作正常Iphone UILongPressGestureRecognitor不工作,iphone,ios,uigesturerecognizer,long-press,Iphone,Ios,Uigesturerecognizer,Long Press,我正在尝试创建一个应用程序,当启动UILongPressGestureRecognitor手势时,可以拖放UIButtons。事实上,我的应用程序在任何iPad上都运行良好。它只会在iPhone上产生问题,并且低于iOS 5.0,因为它在配备iOS 5.0的iPhone上工作正常 UILongPressGestureRecognizer * gesture = [[UILongPressGestureRecognizer alloc] initWithTarget: self action: @
UILongPressGestureRecognizer * gesture = [[UILongPressGestureRecognizer alloc] initWithTarget: self action: @selector(moveActionGestureRecognizerStateChanged:)];
gesture.minimumPressDuration = 0.5;
gesture.delegate = self;
[self.dragView addGestureRecognizer: gesture];
[gesture release];
- (void) moveActionGestureRecognizerStateChanged: (UILongPressGestureRecognizer *) recognizer
{
switch ( recognizer.state )
{
default:
case UIGestureRecognizerStateFailed:
{
dragView.alpha=1.0;
[dragView release];
dragView=nil;
break;
}
case UIGestureRecognizerStatePossible:
{
dragView.alpha=0.8;
dragView.frame=CGRectMake(dragView.frame.origin.x, dragView.frame.origin.y, dragView.frame.size.width, dragView.frame.size.height);
}
case UIGestureRecognizerStateCancelled:
{
dragView.alpha=1.0;
[dragView release];
dragView=nil;
break;
}
case UIGestureRecognizerStateEnded:
{
//Set dragView on target position
break;
}
case UIGestureRecognizerStateBegan:
{
//NSLog(@"Began");
dragView.alpha=0.8;
dragView.frame=CGRectMake(dragView.frame.origin.x, dragView.frame.origin.y, dragView.frame.size.width, dragView.frame.size.height);
[self bringSubviewToFront:dragView];
break;
}
case UIGestureRecognizerStateChanged:
{
[self.view bringSubviewToFront:dragView];
CGPoint offset = [recognizer locationInView: self.scrollView];
dragView.frame=CGRectMake(offset.x, offset.y, dragView.frame.size.width, dragView.frame.size.height);
}
break;
}
}
我有两台设备,分别是iPhone3G和iPhone4。此功能在配备iOS 5.0的iPhone4中运行良好,但在配备iOS 4.2.1的iPhone3G中运行不正常。有时它在iPhone3G中工作,但有时它不调用委托方法
如果你有什么解决办法,请告诉我
谢谢 是否根本不调用委托方法,或者是否未选择任何案例?我不知道这是否真的解决了您的问题,但您应该修复您的
开关
(在默认情况下获取战利品):
感谢这项工作,但在iPhone3G中,有时会调用委托方法“MoveActionGestureRecognitzerStateChanged”。所以它有时不起作用。如果我遗漏了什么,请告诉我。
switch ( recognizer.state )
{
case someCase:
{
// ...
break;
}
default:
break;
}