UIView

2013-06-21 8 views
8

में UIImagePickerController का उपयोग करते हुए मैं बटन जो जब मैं प्रदर्शित करता है पर क्लिक करें कैमरा (पूरी तरह से काम करता है)UIView

- (IBAction)getPhoto:(id)sender 
{ 
    NSLog(@"Button clicked!"); 
    imagePicker = [[UIImagePickerController alloc] init]; 
    imagePicker.delegate = self; 

    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) { 
     [imagePicker setSourceType:UIImagePickerControllerSourceTypeCamera]; 
    } 

    else { // IF the device doesn't have a camera, so use the photos album 
     [imagePicker setSourceType:UIImagePickerControllerSourceTypeSavedPhotosAlbum]; 
    } 

    [self addSubview:imagePicker.view]; 
} 

जो बाद मैं, एक छवि, आदि भी लग सकते हैं - लेकिन जब मैं "उपयोग" पर क्लिक करें: यहाँ कुछ नहीं होता है मेरी विधि है: छवि पिकर itslelf को खारिज नहीं करता है: एप्लिकेशन बस कुछ भी नहीं करता है, मैं बस उस छवि को लेने की कोशिश कर रहा हूं जिसे मैंने अभी लिया है और इसे स्क्रीन पर एक सीजीआरईटी के अंदर प्रदर्शित करता है।

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { 
    [picker dismissViewControllerAnimated:YES completion:NULL]; 

    UIImageView *patientImage = [[UIImageView alloc] init]; 
    patientImage.frame = CGRectMake(625, 25, 83, 103); 

    UIImage *chosenImage = info[UIImagePickerControllerEditedImage]; 
    self.patientImage.image = chosenImage; 
} 

यहां तक ​​कि जब मैं एक छवि लेने के बिना रद्द बटन हिट, imagePicker (कैमरा इंटरफेस) खारिज नहीं करता ही

कोई मदद, सलाह, या मार्गदर्शन बहुत सराहना की जाएगी।

+0

patientImage.frame = CGRectMake (625, 25, 83, 103); यहां एक्स डिवाइस डिवाइस से बाहर है :(इसलिए आप छवि नहीं देख सकते हैं और [पिकर डेमरीव्यू कंट्रोलरएनीमेटेड: हाँ पूर्णता: पूर्ण]; विधि –

+0

के अंत में आपको नितिन धन्यवाद, लेकिन मैं आईपैड का उपयोग कर रहा हूं, इसलिए यह है मेरी स्क्रीन, और मैंने dismissieVieController को स्थानांतरित करने का प्रयास किया है, बिना किसी सफलता –

+0

रोगी है किसी भी दृश्य में जोड़ा गया है? जैसे [self addSubview: patientImage]; –

उत्तर

4

UIView उपclass में विधि है?

thats मामले, तो यह बेहतर होगा यदि:

  1. getPhoto: कोड UIView उपवर्ग पूरी तरह से बाहर ले जाएँ, और देखने के माता पिता को देखने के नियंत्रक में रख दें।

  2. अपने UIButton अपने UIView की संपत्ति करें: @property (nonatomic, strong) UIButton *myButton;

  3. आपके विचार नियंत्रक में, बटन के लक्ष्य & कार्रवाई सेट इस प्रकार है:

    [myView.myButton addTarget:self action:@selector(getPhoto:) forControlEvents:UIControlEventTouchUpInside]; 
    
  4. अंत में, अपने getPhoto: विधि, कॉल में [self presentViewController:imagePicker animated:YES completion:NULL];

  5. आपका - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info कोड अल होना चाहिए ओ, दृश्य नियंत्रक में जाना बदलते self.patientImage.image = chosenImage;myView.patientImage.image = chosenImage;

+0

जब मैं जगह करता हूं ViewController क्लास के viewdidload विधि में लाइन 3 मुझे "त्रुटि के प्रकार पर PicBtn नहीं मिला" कहने में त्रुटि मिली है - लेकिन मैंने PicBtn को UIButton के रूप में घोषित किया है और मेरे UIView क्लास के शीर्षलेख में एक संपत्ति के रूप में "myView" –

+0

उन लोगों के लिए भी जो उनके प्रश्न में दिलचस्पी रखते हैं @VinnyCoyne ने कहा कि सही काम करना था। । । । लेकिन 'myView.myButton' पर कॉल करने के बजाय आपको पहले MyView क्लास का एक उदाहरण बनाना होगा और फिर इसे आवृत्ति चर के नाम का उपयोग करके कॉल करना होगा। इससे मेरी समस्या हल हो गई। । धन्यवाद –

5

You shouldn't be doing the "addSubview" thing up there लेकिन इसके बजाय कार्य करें:

[self presentViewController:imagePicker animated:YES completion:nil]; 
+1

समस्या मौजूद है ViewController UIViewController का एक तरीका है, मुझे इस एप्लिकेशन को काम करने की आवश्यकता है UIView के अंदर, कोई विचार? –

+1

एक दृश्य किसी अन्य नियंत्रक को प्रस्तुत करने के लिए ज़िम्मेदार नहीं होना चाहिए। यह आईओसी के मूल में एमवीसी के खिलाफ है। आपके पास एक दृश्य नियंत्रक होना चाहिए जैसा कि इस उत्तर में सुझाया गया है। –

-1

[self.addSubView:imagePicker.view]; और बदले

[self presentViewController:imagePicker animated:YES completion:NULL];

निकालें आप खारिज कर रहे हैं चर picker हालांकि picker अनिर्धारित रहता है। इसके बजाए:

[self dismissModalViewControllerAnimated:YES completion:NULL]; और सुनिश्चित करें कि यह आपकी विधि के अंत में है।

1

को न जानते हो क्यों रद्द बटन काम नहीं कर रहा है। लेकिन यह परिवर्तन करें, यह उस छवि का चयन करेगा जिसे आप क्लिक कर रहे हैं।

यदि आप एक रद्द ईवेंट चाहते हैं तो इसे कस्टम UIBarButton बनाकर जोड़ें और इसे जोड़ें।

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { 

UIImageView *patientImage = [[UIImageView alloc] init]; 
patientImage.frame = CGRectMake(625, 25, 83, 103); 

UIImage *chosenImage = info[UIImagePickerControllerEditedImage]; 
self.patientImage.image = chosenImage; 

[imagePicker.view removeFromSuperview]; 

} 
1

प्रयास करें:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { 
    [picker.view removeFromSuperview]; 

    UIImageView *patientImage = [[UIImageView alloc] init]; 
    patientImage.frame = CGRectMake(625, 25, 83, 103); 

    UIImage *chosenImage = info[UIImagePickerControllerEditedImage]; 
    self.patientImage.image = chosenImage; 
} 
5

बजाय एक subview के रूप पिकर जोड़ने के लिए, आप एक UIPopoverController को पिकर जोड़ना चाहिए।

फिर आप इस तरह presentPopoverFromRect:inView:permittedArrowDirections:animated: पॉपओवर विधि का उपयोग करके अपने UIView उपवर्ग के भीतर से यह प्रदर्शित कर सकते हैं:

self.popover = [[UIPopoverController alloc] initWithContentViewController:imagePicker]; 
[self.popover presentPopoverFromRect:sender.frame inView:self permittedArrowDirections: UIPopoverArrowDirectionAny animated:YES]; 

उसके बाद, आप का उपयोग कर पॉपओवर खारिज करने के लिए प्रतिनिधि तरीकों का उपयोग कर सकते हैं:

[self.popover dismissPopoverAnimatedYES]; 

official docs:

द्वारा आवश्यक है तालिका इंगित करता है कि आईपैड पर, आप UIImagePickerControllerSourceTypePhotoLibrary या UIImagePickerControllerSourceTypeSavedPhotosAlbum का एक स्रोत के प्रकार का उल्लेख करता है, तो में वर्णित "पेश और पॉपओवर खारिज" UIPopoverController कक्षा संदर्भ के रूप में, आप चित्र पिकर पेश एक पॉपओवर नियंत्रक का उपयोग करना चाहिए। यदि आप सहेजे गए चित्रों और फिल्मों में से चुनने के लिए एक छवि पिकर को (पूर्ण-स्क्रीन) प्रस्तुत करने का प्रयास करते हैं, तो सिस्टम अपवाद उठाता है।

आईपैड पर, यदि आप UIImagePickerControllerSourceTypeCamera का एक स्रोत के प्रकार का उल्लेख, आप छवि पिकर रीति से (पूर्ण स्क्रीन) पेश या एक पॉपओवर का उपयोग करके कर सकते हैं। हालांकि, ऐप्पल अनुशंसा करता है कि आप कैमरा इंटरफ़ेस केवल पूर्ण-स्क्रीन प्रस्तुत करें।

 संबंधित मुद्दे