30

मेरे पास आईफोन और आईपैड के लिए एक ऐप है, और जब मैं UIPickerViewController को UIPopoverController में आईपैड के लिए लोड करने का प्रयास करता हूं तो मुझे अपवाद "स्रोत प्रकार 1 उपलब्ध नहीं है" प्राप्त होता है। डिवाइस का उपयोग करने के बावजूद समस्या हो रही है।स्रोत प्रकार 1 उपलब्ध नहीं है

@try { 
    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) { 
     UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init]; 

     imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera; 
     imagePicker.delegate = self; 
     imagePicker.allowsEditing = NO; 

     self.tempComp = component; 
     if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) { 
      [self presentModalViewController:imagePicker animated:YES]; 
     }else { 
      // We are using an iPad 
      popoverController=[[UIPopoverController alloc] initWithContentViewController:imagePicker]; 
      popoverController.delegate = self; 

      [popoverController presentPopoverFromRect:component.bounds inView:component permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 
     } 
    }else{ 
     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Camera Non Disponibile" message:@"La camera non è disponibile" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles: nil]; 
     [alert show]; 
    } 
} 
@catch (NSException *exception) { 
    NSLog(@"Cattura eccezione %@", exception); 
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Eccezione" message:[NSString stringWithFormat:@"%@", exception] delegate:self cancelButtonTitle:@"Ok" otherButtonTitles: nil]; 
    [alert show]; 
} 

उत्तर

74

यह है [UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera] और स्पष्ट रूप से सिम्युलेटर जैसे कुछ camera ... इस तरह एक चेतावनी देने के लिए आगे बढ़ें की जरूरत नहीं है, क्योंकि आप कोड के बाद से सिम्युलेटर पर कैमरा ... खोल रहे है

if (![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) { 

    UIAlertView *myAlertView = [[UIAlertView alloc] initWithTitle:@"Error" 
                  message:@"Device has no camera." 
                 delegate:nil 
               cancelButtonTitle:@"OK" 
               otherButtonTitles: nil]; 

    [myAlertView show]; 

} 
else{ 
    //other action 
} 

चिंता करने की कोई बात नहीं, यह डिवाइस पर सही ढंग से काम करेगा!

स्विफ्ट 3:

if !UIImagePickerController.isSourceTypeAvailable(.camera){ 

    let alertController = UIAlertController.init(title: nil, message: "Device has no camera.", preferredStyle: .alert) 

    let okAction = UIAlertAction.init(title: "Alright", style: .default, handler: {(alert: UIAlertAction!) in 
    }) 

    alertController.addAction(okAction) 
    self.present(alertController, animated: true, completion: nil) 

} 
else{ 
    //other action 
} 
+4

यह सही जवाब है। – VedTopkar

+0

मुझे उत्पादन में उपयोगकर्ता से यह दुर्घटना मिली। स्पष्ट रूप से सिम्युलेटर में नहीं। –

+0

प्रलेखन से: 'यदि कैमरा पहले से उपयोग में है, तो यह विधि NO' –