2013-12-06 5 views
1

Я разрабатываю глобальное приложение (iPhone и iPad). Я делаю разные процессы для iPhone или iPad. Но я видел крушение, как показано ниже. Это аварийное устройство - это iPhone, но запустил код, который я написал для iPad. Как это могло произойти. Я написал код, который отличает iPhone и iPad от ошибок? Thanx- это устройство iPhone или iPad программно

enter image description here

-(IBAction)showSearchAirports:(id)sender{ 

     UIButton *tempButton=(UIButton*)sender; 

     AirportSearch2 *airportsSearch=[[AirportSearch2 alloc] initWithNibName:@"AirportSearch" bundle:nil]; 

     if ([self isDeviceiPhone]) { 
      [self presentViewController:airportsSearch animated:YES completion:NULL]; 
     }else{ 


       if (self.popOver) { 
        [self.popOver dismissPopoverAnimated:YES]; 
        self.popOver = nil; 

       } 

       UINavigationController *navigationController = [[[UINavigationController alloc] initWithRootViewController:airportsSearch] autorelease]; 


       self.popOver=[[[UIPopoverController alloc] initWithContentViewController:navigationController] autorelease]; 

       self.popOver.delegate     = self; 
       [self.popOver setPopoverContentSize:CGSizeMake(285, 370)]; 

       //This line 481 
       [self.popOver presentPopoverFromRect:tempButton.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionRight animated:YES]; 


     } 

} 



-(BOOL)isDeviceiPhone{ 
    if([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) 
     return TRUE; 
    else 
     return FALSE; 
} 
+0

Вы должны показать нам код, который используется для определения типа устройства :) – noobzilla

+0

Собственно Eсти В продолжении кода – hiwordls

+0

App был разбитым на '[самоуправления presentViewController: airportsSearch анимированный: ДА завершение: NULL];' линия. Ваше состояние правильно – Maulik

ответ

0

Для определения использования типа устройства следующие методы:

+ (BOOL) isiPad { 
#if (__IPHONE_OS_VERSION_MAX_ALLOWED >= 30200) 
    if ([[UIDevice currentDevice] respondsToSelector: @selector(userInterfaceIdiom)]) 
     return ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPad); 
#endif 
    return NO; 
} 


+(BOOL)isiPhone 
{ 
    NSString *deviceType = [UIDevice currentDevice].model; 
    if([deviceType isEqualToString:@"iPhone"]) 
     return YES; 
    else 
     return NO; 
} 
4

попробовать этот

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 
    { 
     // The device is an iPad running iOS 3.2 or later. 
     Return NO; 
    } 
    else 
    { 
     // The device is an iPhone or iPod touch. 
     Return YES; 
    } 
0

просто использовать этот макрос, определенный в UIDevice классе вы можете обратиться к документации (https://developer.apple.com/LIBRARY/IOS/documentation/UIKit/Reference/UIDevice_Class/Reference/UIDevice.html) также только просто использовать условие как

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) 
{ 
    return yes; 
} 
else 
    return No; 
0

Вы не показали нам код, который используется для определения типа устройства, но вот один из способов вы можете определить тип устройства во время выполнения.

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 
{ 
    // iPad-specific interface here 
} 
else 
{ 
    // iPhone and iPod touch interface here 
} 
Смежные вопросы