Saya memiliki aplikasi yang memungkinkan Anda mengambil gambar dengan kamera iPhone. Semuanya berfungsi dengan baik, tetapi saat pengujian pada perangkat baru yang kebetulan tidak memiliki cukup penyimpanan, aplikasi kamera tidak ditutup.
Jadi pada dasarnya saya membuka pemilih gambar dengan kamera sumber, saya mendapatkan popup yang mengatakan "Penyimpanan yang tersedia tidak cukup untuk mengambil foto..." dan kemudian ketika saya menekan OK, saya berada di aplikasi Kamera, dengan rana tertutup , dan tombol "ambil foto" dan "batal" berwarna abu-abu. Mulai saat ini, satu-satunya hal yang dapat saya lakukan adalah mematikan aplikasi karena tidak ada cara untuk keluar dari layar ini.
Dalam kode saya, saya memanggil kamera dengan sesuatu seperti:
UIImagePickerController * photoPicker= [[UIImagePickerController alloc] init];
photoPicker.delegate = self;
photoPicker.sourceType = UIImagePickerControllerSourceTypeCamera;
if ([UIImagePickerController isSourceTypeAvailable:photoPicker.sourceType]) {
[self presentModalViewController:photoPicker animated:YES];
}
Objek yang memanggil ini tentu saja adalah UIImagePickerControllerDelegate dan saya mengimplementasikan kedua metode delegasi (keduanya merespons dengan benar terhadap keberhasilan dan pembatalan acara):
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info;
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker;
Perilaku "tidak ada ruang tersedia" ini tidak termasuk dalam metode delegasi mana pun, jadi saya tidak dapat menutup aplikasi kamera secara terprogram.
Ada pemikiran?
EDIT:
Saat mencoba menjalankan aplikasi di simulator di mana Kamera tidak tersedia, saya melihat Aplikasi mogok karena sumber itu tidak tersedia. Saya menemukan bahwa hanya menugaskan sourceType yang tidak tersedia ke photoPicker, bahkan sebelum memanggil pengontrol, akan membuat aplikasi crash, jadi saya mengubah kode menjadi berikut:
UIImagePickerController * photoPicker= [[UIImagePickerController alloc] init];
photoPicker.delegate = self;
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
photoPicker.sourceType = UIImagePickerControllerSourceTypeCamera;
}else{
return;
}
[self presentModalViewController:photoPicker animated:YES];
Ini masih belum menyelesaikan masalah saya, tetapi ini merupakan temuan yang menarik.
isSourceTypeAvailable
sebelum menampilkan Picker. Mungkin apple memikirkan kasus ini. - person Jonathan Cichon   schedule 19.12.2012isSourceTypeAvailable
dalam kode saya sebagai syarat untuk menampilkan photoPicker, saya hanya menghapusnya untuk menampilkan cuplikan yang lebih sederhana. Terima kasih atas kontribusinya! Saya akan mengedit postingan asli dengan itu. - person manecosta   schedule 19.12.2012isSourceTypeAvailable
sebelum menampilkan photoPicker bukanlah cara yang baik untuk melakukannya, karena jika sumbernya tidak tersedia, maka crash tepat di atribusi.sourceType
. Ini masih tidak membantu masalah saya. Saya akan memperbarui posting asli saya untuk mencerminkan temuan ini. - person manecosta   schedule 19.12.2012