[英]UIImagePickerControllerSourceTypeCamera crashes in IPHONE Simulator?
是否存在一個已知問題,如果您嘗試使用Camera作為源類型來測試UIImagePickerController,那么模擬器將會崩潰?
我有以下代碼:
self.imgPicker = [[UIImagePickerController alloc] init];
self.imgPicker.allowsEditing = NO;
self.imgPicker.delegate = self;
[self.imgPicker setSourceType:UIImagePickerControllerSourceTypeCamera];
[self presentModalViewController:self.imgPicker animated:YES];
[imgPicker release];
在模擬器中運行它,我在堆棧上收到objc-exception-throw錯誤@-[UIImagePickerController setSourceType:]。
現在,如果我將源類型設置為“圖片庫”,則一切運行順利且正常嗎? 這是怎么回事?
Simulator沒有相機,也無法仿真拍照(使用isight會很好,但Apple並不那么友好)。 但是,您的代碼並不安全,因為例如,舊的ipod touch沒有攝像頭,在這種情況下,您的應用將在此設備上崩潰。
正如Apple在UIImagePickerController文檔中建議的那樣:
要使用包含其默認控件的圖像選擇器控制器,請執行以下步驟:
1.驗證設備是否能夠從所需來源中選擇內容。 為此,請調用isSourceTypeAvailable:類方法,並從“ UIImagePickerControllerSourceType”枚舉中提供一個常量。
2.通過調用availableMediaTypesForSourceType:類方法,檢查您正在使用的源類型可用的媒體類型。 這樣一來,您就可以區分可用於視頻錄制的攝像機和僅可用於靜止圖像的攝像機。
3.告訴圖像選擇器控制器,通過設置mediaTypes屬性,根據要提供的媒體類型(靜止圖像,電影或兩者)調整UI。
4.通過調用當前活動視圖控制器的presentModalViewController:animated:方法來呈現用戶界面,並將您配置的圖像選擇器控制器作為新的視圖控制器。
5.當用戶點擊按鈕來選擇新捕獲或保存的圖像或電影,或取消操作時,請使用您的委托對象關閉圖像選擇器。 對於新捕獲的媒體,您的代表可以將其保存到設備上的“相機膠卷”中。 對於以前保存的媒體,您的代表然后可以根據應用程序的用途使用圖像數據。
因此,您必須調用isSourceTypeAvailable
並設置一致的sourceType。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.