سؤال

وأنا أحاول أن استخدام واجهة UIImagePickerController من OS 3.1، مع cameraOverlayView وtakePicture، ولكني فشلت بوضوح أن نفهم كيف يعمل هذا، وحتى أنا لا تحصل على سلوك أريد.

ما أريد القيام به هو فتح الكاميرا والتقاط صورة تلقائيا دون الحاجة إلى وجود مستخدم التفاعل مع لاقط أو تحرير الصورة. لذلك أنا فرعية UIImagePickerController (على غرار المثال في HTTP: / /github.com/pmark/Helpful-iPhone-Utilities/tree/master/BTL٪20Utilities/ ) وإيقاف كافة عناصر التحكم:

- (void)displayModalWithController:(UIViewController*)controller animated:(BOOL)animated {
self.sourceType = UIImagePickerControllerSourceTypeCamera;
self.showsCameraControls = NO;
self.navigationBarHidden = YES;
self.toolbarHidden = YES;
    // Setting the overlay view up programmatically.
ipView = [[ImagePickerView alloc] init];
self.cameraOverlayView = ipView;
[controller presentModalViewController:self animated:NO];
}

في التراكب، لقد تمكنت من إجبار طريقة takePicture من UIImagePickerController لاطلاق النار (وأنا أعلم هذا، لأنني لا أستطيع NSLog، وأنا أسمع صوت الكاميرا التقاط صورة). يظهر التراكب على ما يرام. ومع ذلك، فإن مندوب طريقة didFinishPickingMediaWithInfo: لم يحصل طالب، وimagePickerControllerDidCancel لا الحصول على استدعاء سواء.

وهكذا، كيف يمكنني الحصول على أي الطرق مندوب إلى الحصول على استدعاء، أو حفظ الصورة عن طريق تجاوز الأسلوب takePicture؟ (ليس لدي أي فكرة عن كيفية التقاط بيانات الصورة هنا، وجوجل ويبدو أن فشل لي). لا يسعني الشعور بأنني قد فشلت في فهم الكيفية التي يعمل بها أحشاء UIImagePickerController، ولكن مستندات ليست مفيدة أكثر من اللازم:

ومنها مثلا:

و"يمكنك تقديم وجهة نظر تراكب مخصص لعرض واجهة مخصصة لالتقاط الصور ويمكنك بدء عملية التقاط الصور من التعليمات البرمجية. يمكن عرضها عرض تراكب المخصصة الخاصة بك بالإضافة إلى، أو بدلا من عناصر التحكم الافتراضية المقدمة قبل واجهة صورة منقار ".

وأو من showCameraControls:

واضاف "اذا كنت تعيين هذه الخاصية إلى NO وتوفير الضوابط المخصصة الخاصة بك، يمكنك التقاط صور متعددة قبل اقالة واجهة صورة منتقي." - كيف يمكنني رفض واجهة منقار

ملحوظة: تم تعيين مندوب صحيح في IB، لذلك هذه ليست مشكلة

وشكرا لأي مساعدة يمكن أن تقدم!

هل كانت مفيدة؟

المحلول

ولقد وجدت أن لديك سوى الانتظار "لفترة طويلة بما فيه الكفاية" قبل استدعاء takePicture، أو أنه فشل تماما في صمت. ليس لدي إجابة جيدة عن كيفية تحديد قيمة الحد الأدنى من "طويلة بما فيه الكفاية" من شأنها أن تعمل دائما، ولكن إذا قمت بتعيين جهاز توقيت والانتظار لمدة خمس أو عشر ثوان يجب أن تكون بخير. وسيكون لطيفا لو عاد نوعا من "أنا لست مستعدا لالتقاط صورة بعد، آسف" خطأ إما مباشرة من takePicture أو عن طريق مندوب، ولكن بقدر ما أنا أعلم أنه لا يفعل ذلك.

نصائح أخرى

واستكمالا لسؤالي الخاصة: وتبين أن كنت أحاول أن استخدام takePicture وقت مبكر جدا. عندما انتقلت العمل إلى زر على تراكب وأرسلت takePicture من هذا الزر (مرة واحدة وقدم لاقط مشروط)، وأساليب مندوب أطلقت كما يجب. أنا لا أعرف إذا ما أريد للتحقيق - التقاط الصورة دون الحاجة إلى الضغط على هذا الزر، تلقائيا - ولكن إذا كان كذلك، فإنه من المحتمل أن يتم ذلك عن طريق إرسال takePicture في وقت ما بعد كنت أحاول أن استخدامه

- (الفراغ) imageMethod: (معرف) مرسل { imagePickerController = [[UIImagePickerController الوك] الحرف الأول]. imagePickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary؛

imagePopover=[[UIPopoverController alloc]initWithContentViewController:imagePickerController];
[imagePopover presentPopoverFromRect:importButton.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionLeft animated:YES];
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top