ฉันมีแอพที่ให้คุณถ่ายรูปด้วยกล้องไอโฟน ทุกอย่างทำงานได้อย่างมีเสน่ห์ แต่เมื่อทำการทดสอบบนอุปกรณ์ใหม่ซึ่งมีพื้นที่เก็บข้อมูลไม่เพียงพอ แอปกล้องถ่ายรูปก็ไม่ได้ปิดลง
โดยพื้นฐานแล้ว ฉันเปิดเครื่องมือเลือกรูปภาพด้วยกล้องต้นทาง ฉันได้รับป๊อปอัปที่ระบุว่า "มีพื้นที่เก็บข้อมูลไม่เพียงพอสำหรับการถ่ายภาพ..." จากนั้นเมื่อฉันกดตกลง ฉันอยู่ที่แอปกล้องถ่ายรูปโดยปิดชัตเตอร์ไว้ และทั้งปุ่ม "ถ่ายรูป" และ "ยกเลิก" กลายเป็นสีเทา จากจุดนี้ สิ่งเดียวที่ฉันทำได้คือปิดแอปเนื่องจากไม่มีทางที่จะออกจากหน้าจอนี้ได้
ในโค้ดของฉัน ฉันเรียกกล้องว่า:
UIImagePickerController * photoPicker= [[UIImagePickerController alloc] init];
photoPicker.delegate = self;
photoPicker.sourceType = UIImagePickerControllerSourceTypeCamera;
if ([UIImagePickerController isSourceTypeAvailable:photoPicker.sourceType]) {
[self presentModalViewController:photoPicker animated:YES];
}
วัตถุที่เรียกสิ่งนี้แน่นอนว่าเป็น UIImagePickerControllerDelegate และฉันใช้วิธีการมอบหมายทั้งสองวิธี (ทั้งคู่ตอบสนองอย่างถูกต้องต่อความสำเร็จและยกเลิกกิจกรรม):
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info;
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker;
ลักษณะการทำงาน "ไม่มีที่ว่าง" นี้ไม่ตรงกับวิธีการมอบหมายใด ๆ ดังนั้นฉันจึงไม่สามารถปิดแอปกล้องโดยทางโปรแกรมได้
มีความคิดอะไรบ้าง?
แก้ไข:
เมื่อพยายามเรียกใช้แอปในเครื่องจำลองโดยที่กล้องไม่พร้อมใช้งาน ฉันสังเกตเห็นว่าแอปหยุดทำงานเนื่องจากแหล่งที่มานั้นไม่พร้อมใช้งาน ฉันพบว่าการกำหนด sourceType ที่ไม่พร้อมใช้งานให้กับ photoPicker แม้กระทั่งก่อนที่จะเรียกคอนโทรลเลอร์ จะทำให้แอปขัดข้อง ดังนั้นฉันจึงเปลี่ยนโค้ดเป็นดังนี้:
UIImagePickerController * photoPicker= [[UIImagePickerController alloc] init];
photoPicker.delegate = self;
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
photoPicker.sourceType = UIImagePickerControllerSourceTypeCamera;
}else{
return;
}
[self presentModalViewController:photoPicker animated:YES];
สิ่งนี้ยังคงไม่สามารถแก้ไขปัญหาของฉันได้ แต่เป็นการค้นพบที่น่าสนใจ
isSourceTypeAvailable
ก่อนที่จะนำเสนอเครื่องมือเลือก บางที Apple ก็คิดเรื่องนี้ - person Jonathan Cichon   schedule 19.12.2012isSourceTypeAvailable
ในโค้ดอยู่แล้วเป็นเงื่อนไขในการนำเสนอ photoPicker ฉันเพิ่งถอดมันออกเพื่อแสดงตัวอย่างที่ง่ายกว่า ขอบคุณสำหรับการสนับสนุนอย่างไรก็ตาม! ฉันจะแก้ไขโพสต์ต้นฉบับด้วยสิ่งนั้น - person manecosta   schedule 19.12.2012isSourceTypeAvailable
ก่อนนำเสนอ photoPicker ไม่ใช่ที่ที่ดีที่จะทำเช่นนั้น ราวกับว่าแหล่งที่มาไม่พร้อมใช้งาน มันจะขัดข้องตรงที่การระบุแหล่งที่มาของ.sourceType
นี่ยังไม่ได้ช่วยปัญหาของฉัน ฉันจะอัปเดตโพสต์ต้นฉบับของฉันเพื่อสะท้อนถึงการค้นพบนี้ - person manecosta   schedule 19.12.2012