Я пытаюсь создать приложение, в котором можно перетаскивать UIB-кнопки при срабатывании жеста UILongPressGestureRecognizer.На самом деле мое приложение работает нормально на любом iPad.это создает проблему только в iPhone и ниже, чем в iOS 5.0, и отлично работает в iPhone с iOS 5.0.
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.Эта функция работает нормально в iPhone 4 с iOS 5.0, но не работает должным образом в iPhone 3g с iOS 4.2.1.Иногда он работает в iPhone 3g, но иногда он не вызывает методы делегата.
Дайте мне знать, если у вас есть какое-либо решение для этого.
Спасибо!