我正在尝试创建一个应用程序,当触发 UILongPressGestureRecognizer 手势时,可以在其中拖放 UIButtons。实际上我的应用程序在任何 iPad 上都可以正常工作。它仅在 iPhone 中产生问题并且低于 iOS 5.0 意味着它在带有 iOS 5.0 的 iPhone 中工作正常。
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;
}
}
我有 2 台设备 iPhone 3G 和 iOS 4.2.1 和 iPhone 4 和 5.0。此功能在装有 iOS 5.0 的 iPhone 4 中运行良好,但在装有 iOS 4.2.1 的 iPhone 3g 中无法正常运行。有时它在 iPhone 3g 中工作,但有时它不调用委托方法。
如果您对此有任何解决方案,请告诉我。
谢谢!