Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/108.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 UILongPressGestureRecognitor不工作_Iphone_Ios_Uigesturerecognizer_Long Press - Fatal编程技术网

Iphone UILongPressGestureRecognitor不工作

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: @

我正在尝试创建一个应用程序,当启动UILongPressGestureRecognitor手势时,可以拖放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;
    }
}
我有两台设备,分别是iPhone3G和iPhone4。此功能在配备iOS 5.0的iPhone4中运行良好,但在配备iOS 4.2.1的iPhone3G中运行不正常。有时它在iPhone3G中工作,但有时它不调用委托方法

如果你有什么解决办法,请告诉我


谢谢

是否根本不调用委托方法,或者是否未选择任何案例?我不知道这是否真的解决了您的问题,但您应该修复您的
开关
(在默认情况下获取战利品):


感谢这项工作,但在iPhone3G中,有时会调用委托方法“MoveActionGestureRecognitzerStateChanged”。所以它有时不起作用。如果我遗漏了什么,请告诉我。
switch ( recognizer.state )
{
    case someCase:
    {
        // ...
        break;
    }

    default:
        break;
}