2013-05-18 49 views
1

我有以下代碼可讓用戶拍攝照片或從相冊中進行選擇。雖然從相機拍攝的照片製作完美,但當我選擇觸發動作的按鈕以從相冊中選擇相冊時,但您實際上無法選擇照片。在啓動從相冊方法中選擇時,我確實在控制檯中收到了一條警告,當我從相機方法啓動拍攝時,我沒有收到該警告。以下是相關的代碼和警告。UIImagepicker適用於相機但不適用於相冊

.H

@interface sitespecTakePhoto : UIViewController <UIImagePickerControllerDelegate,      UINavigationControllerDelegate> 
@property (strong, nonatomic) NSString *pbvlocname; 
@property (strong, nonatomic) IBOutlet UITextField *descTextField; 
@property (strong, nonatomic) IBOutlet UIImageView *imageField; 
@property (strong, nonatomic) UIImagePickerController *imagePicker; 
@property (nonatomic, strong) IBOutlet UILabel *successLabel; 
@property UIImage *imageToSend; 
@property NSString *desc; 
- (IBAction)imageFromCamera:(id)sender; 
- (IBAction)resignKeyboard:(id)sender; 
-(IBAction)uploadButtonClicked:(id)sender; 
@end 

.M

- (IBAction)imageFromCamera:(id)sender 
{ 

imagePicker = [[UIImagePickerController alloc] init]; 
imagePicker.delegate = self; 
imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera; 
imagePicker.cameraDevice = UIImagePickerControllerCameraDeviceRear; 
[self presentViewController:imagePicker animated:YES completion:nil]; 
} 

- (IBAction)imageFromAlbum:(id)sender 
{ 
imagePicker = [[UIImagePickerController alloc] init]; 
imagePicker.delegate = self; 
imagePicker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum; 

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

} 

#pragma mark - Image Picker Delegate Methods 

// Dismiss the image picker on selection and use the resulting image in our ImageView 
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage: (UIImage *)image editingInfo:(NSDictionary *)editingInfo 
{ 

[[imagePicker presentingViewController] dismissViewControllerAnimated:YES completion:nil]; 
[imageField setImage:image]; 
imageToSend = image; 



} 

// On cancel, only dismiss the picker controller 
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker 
{ 
[[imagePicker presentingViewController] dismissViewControllerAnimated:YES completion:nil]; 
} 


- (IBAction)resignKeyboard:(id)sender 
{ 
desc = descTextField.text; 
[sender resignFirstResponder]; 
} 

,當我按下按鈕來觸發imageFromAlbum方法我得到警告:

Warning: Attempt to present <UIImagePickerController: 0x1d59d6b0> on <UINavigationController: 0x1e0319f0> while a presentation is in progress! 

再次,專輯顯示但沒有任何反應,當你點擊一個圖像或按取消按鈕,它幾乎在我看來這種方法不認識g UIImagePicker委託方法,而imageFromCamera方法是。提前感謝任何幫助!

+0

你如何讓相機或相冊之間的選擇?操作表?你使用哪種委託方法? – rmaddy

+0

imagePickerController:didFinishPickingImage:editingInfo:已棄用。使用imagePickerController:didFinishPickingMediaWithInfo:來代替。 – Franck

回答

0

錯誤消息中的關鍵短語是「當演示文稿正在進行中」。這意味着你在另一個presentViewController正在發射時正在這樣做。我敢打賭,你不小心將此按鈕掛在兩個方法上,以便它試圖同時執行兩個presentViewController命令。使用Interface Builder右側的連接檢查器來解決這個問題。

+0

就是這樣!當我創建了附加到fromAlbum方法的按鈕時,我只是使用Command-D複製了我已經連接到fromCamera方法的其他按鈕!非常感謝,現在對不起,我把我的頭埋在恥辱:-) –

+0

但你怎麼看我能猜出問題的根源?因爲我完成了*完全相同的事情!控制動作消息具有多個目標的能力令人驚訝,而Command-D是讓它驚訝的最簡單方法。 – matt

相關問題