9

私はついにUIImagePickerControllerビデオを録画するときにクラッシュするバグを突き止めました。iPhoneのVoiceOverアクセシビリティ設定を有効にすると、通話時にレコーダーが必ずクラッシュしpresentModalViewControllerます。

私はこれまで回避策を考え出すことに失敗してきました。他の誰かがこれを経験し、それを修正することができましたか?

4

2 に答える 2

3

上記のコメントで@kamensが述べたように、回避策は、次のようにcamera.showsCameraControls = NO、モーダルビューコントローラーを提示するときに完了ブロックに含めることです。

[controller presentViewController:self animated:YES completion:^{self.showsCameraControls = NO;}];

ただし、このソリューションでは、カメラが提示されるとカメラコントロールが瞬間的に点滅し、その後消えます。コントロールを本当に非表示にする必要がある場合は、明らかに理想的ではありません。他の回避策は、設定することcamera.showsCameraControls = OFFです...さらに理想的ではありません。


@quellish、これはクラッシュからの出力です:

*** -[PLCameraToggleButton setAccessibilityValue:]: message sent to deallocated instance 0x4a330b0

@kamens、これが私がとを設定するために使用しているコードmediaTypesですcaptureMode

tmpCamera.mediaTypes = [NSArray arrayWithObject:(NSString *)kUTTypeMovie];
tmpCamera.cameraCaptureMode = UIImagePickerControllerCameraCaptureModeVideo;
于 2012-06-18T14:59:36.083 に答える
1

@jamesが言及しているように、これはiOS5.1で次の場合に発生します。

  • 使用するpicker.showsCameraControls = NO
  • への呼び出しで使用animated:NOする[viewController presentViewController:picker animated:YES completion:nil];
  • VoiceOverアクセシビリティオプションが有効になっています。

...そして、重要なことに、ピッカーが受け入れるメディアタイプとして映画のみを指定する場合:

  • picker.mediaTypes = [NSArray arrayWithObject:(NSString *)kUTTypeMovie];

ただし、上記のmediaTypes行を次のように変更することでこれを修正できました。

picker.mediaTypes = [UIImagePickerController availableMediaTypesForSourceType:picker.sourceType];

...デフォルトのカメラコントロールが非表示になっていて、ビデオの録画を開始するか写真を撮るかをプログラムで制御できることを考えると、これは正常に機能します。

私はこのクラッシュの原因を理解しているとは言いません。

于 2012-06-19T07:03:12.077 に答える