Приложение для iPad с использованием ActionSheet с отображением fromRect, которое отображается некорректно, пока устройство не будет повернуто хотя бы один раз - PullRequest
0 голосов
/ 06 февраля 2011

У меня есть приложение для iPad, в котором есть лист действий, который вызывается с кнопки.Я использую showFromRect для actionSheet, поэтому он выглядит как popOver.При первом запуске приложения actionSheet никогда не отображается в правильном месте, пока устройство не будет повернуто хотя бы один раз.После того, как устройство повернуто, actionSheet находится в правильном месте.мой код ниже.

-(IBAction)showMenu
{
    UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"Copy To The Clipboard" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"Term & Definition",@"Term",@"Definition", nil];

UIDevice *thisDevice = [UIDevice currentDevice];
CGRect myImageRect;

if(thisDevice.orientation==UIDeviceOrientationPortrait){myImageRect = CGRectMake(300.0f, 950.0f, 320.0f, 175.0f);NSLog(@"P");}  //Portait Mode
else if(thisDevice.orientation==UIDeviceOrientationPortraitUpsideDown){myImageRect = CGRectMake(300.0f, 950.0f, 320.0f, 175.0f);NSLog(@"PUD");}//Portait Mode UpsideDown
else if(thisDevice.orientation==UIDeviceOrientationLandscapeLeft){myImageRect = CGRectMake(300.0f, 700.0f, 320.0f, 175.0f);NSLog(@"LL");}//Landscape Mode Left
else if(thisDevice.orientation==UIDeviceOrientationLandscapeRight){myImageRect = CGRectMake(300.0f, 700.0f, 320.0f, 175.0f);NSLog(@"LR");}//Landscape Mode Right

[actionSheet showFromRect:myImageRect inView:self.view animated:YES];
[actionSheet release];
}

любая помощь будет принята с благодарностью.

1 Ответ

1 голос
/ 06 февраля 2011
-(IBAction)pasteMenuiPad
{
    UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"Copy To The Clipboard" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"Term & Definition",@"Term",@"Definition", nil];

    CGRect myImageRect = CGRectMake(300.0f, 950.0f, 320.0f, 175.0f);;

    if([self interfaceOrientation] == UIInterfaceOrientationPortrait){myImageRect = CGRectMake(300.0f, 950.0f, 320.0f, 175.0f);NSLog(@"P");}    //Portait Mode
    else if([self interfaceOrientation] == UIInterfaceOrientationPortraitUpsideDown){myImageRect = CGRectMake(300.0f, 950.0f, 320.0f, 175.0f);NSLog(@"PUD");}//Portait Mode UpsideDown
    else if([self interfaceOrientation] == UIInterfaceOrientationLandscapeLeft){myImageRect = CGRectMake(300.0f, 700.0f, 320.0f, 175.0f);NSLog(@"LL");}//Landscape Mode Left
    else if([self interfaceOrientation] == UIInterfaceOrientationLandscapeRight){myImageRect = CGRectMake(300.0f, 700.0f, 320.0f, 175.0f);NSLog(@"LR");}//Landscape Mode Right

    [actionSheet showFromRect:myImageRect inView:self.view animated:YES];
    [actionSheet release];
}

Этот метод показывает правильное позиционирование независимо от того, было ли устройство повернуто.

...