在我的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;
}
答案 0 :(得分:0)
我不知道为什么会发生这种情况,但根据我的经验,您必须假设supportedInterfaceOrientations将被多次调用,并让您的逻辑处理它。您应该将大部分代码从那里移到其他地方,可能是loadView或init函数。标准做法是只在supportedInterfaceOrientations中包含代码,该代码会立即报告您支持的方向。