1

在我的 ios6 应用程序中,supportedInterface 定向方法调用了 2 次。如何防止这种情况以及如何使其在 ios6 中只调用一次。请让我知道解决此问题的方法。提前致谢。

-(BOOL)shouldAutorotate
{
    return YES;
}




- (NSUInteger)supportedInterfaceOrientations
{
    orientationControlString=@"thumbnailNotSelected";
    NSLog(@"appdelegate.previewImageScallingmethodCallControlValue value is %d",appdelegate.previewImageScallingmethodCallControlValue); //Gestures settings
    viewsHiddingGesture=[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(operationsOnViews:)];
    viewsHiddingGesture.cancelsTouchesInView=NO;
    [self.view addGestureRecognizer:viewsHiddingGesture];


    launchPopOverGesture=[[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(annotationsPopOver:)];
    launchPopOverGesture.minimumPressDuration=0.8;
    launchPopOverGesture.allowableMovement=NO;
    launchPopOverGesture.cancelsTouchesInView=NO;
    [tiledView addGestureRecognizer:launchPopOverGesture];
    addAnnotationsGesture=[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(addPinAnnotation:)];
    annotationScroller.contentSize=CGSizeMake(258, 700);

    appdelegate =(AppDelegate *)[[UIApplication sharedApplication]delegate];

    UIInterfaceOrientation statusBarOrientation =[UIApplication sharedApplication].statusBarOrientation;


    NSLog(@"statusBarOrientation in supported interface orientations is %d",statusBarOrientation);

    NSLog(@"PREVIEWIMAGESCALLING VALUE IS %d",appdelegate.previewImageScallingmethodCallControlValue);



    if(statusBarOrientation == UIInterfaceOrientationLandscapeLeft  || statusBarOrientation == UIInterfaceOrientationLandscapeRight)
    {
        // code for landscape orientation
        patternRemovalValue=0;

        [self landscapeOrientation];


        if(appdelegate.previewImageScallingmethodCallControlValue==1)
        {
            [self previewImageScallingInLandscape];
            firstOrientationChange=YES;
            appdelegate.getImagesResponseArrayObjectNumber=0;

        }

        else if(((appdelegate.previewImageScallingmethodCallControlValue%2)==0) && (appdelegate.previewImageScallingmethodCallControlValue > 1))
        {
            [self previewImageScallingInLandscape];
            firstOrientationChange=NO;


        }

        appdelegate.orientationChangesCount++;
        patternRemovalValue++;
        appdelegate.previewImageScallingmethodCallControlValue++;


    }
    else if(statusBarOrientation == UIInterfaceOrientationPortraitUpsideDown || statusBarOrientation == UIInterfaceOrientationPortrait)

    {
        // code for Portrait orientation
        patternRemovalValue=0;

        [self potraitOrientation];


        if(appdelegate.previewImageScallingmethodCallControlValue==1)
        {
            [self previewImageScallingInPotrait];
            firstOrientationChange=YES;
            appdelegate.getImagesResponseArrayObjectNumber=0;


        }

        else if(((appdelegate.previewImageScallingmethodCallControlValue%2)==0) && (appdelegate.previewImageScallingmethodCallControlValue > 1))
        {
            [self previewImageScallingInPotrait];
            firstOrientationChange=NO;

        }


        patternRemovalValue++;
        appdelegate.previewImageScallingmethodCallControlValue++;


    }

return UIInterfaceOrientationMaskAll;
}
4

1 回答 1

0

我不知道为什么会发生这种情况,但根据我的经验,您必须假设 supportedInterfaceOrientations 将被多次调用,并让您的逻辑处理它。您应该将大部分代码从那里移到其他地方,也许是 loadView 或您的 init 函数。标准做法是仅在supportedInterfaceOrientations 中有代码,该代码会立即报告您支持的方向。

于 2013-06-28T14:25:23.343 回答