2

UIImagePickerControllerビデオのキャプチャに使用する、やや奇妙な動作が発生しています。ユーザーがビデオを録画して選択し、ビューコントローラーを閉じた後、いずれかのアプリをタップUITextFieldすると、アプリは再び「録画」モードになりますが、UIImagePickerController表示されません。ボリュームロッカーが停止/録音ボタンになり(押すとそれぞれのチャイムが鳴ります)、キーボードが「クリック」を停止し(録音が進行中のときはいつもそうです)、アプリを閉じると次のことができます。赤い録音ステータスバーが一瞬点滅するのを見てください。

繰り返しにUIImagePickerControllerなりますが、その時点では存在しませんが、アプリは何かを記録しているように動作します。ただし、ボリュームロッカーを押して一部のクリップを実際に「記録」しても、ライブラリに保存されません(私のdidFinishPickingMediaWithInfo方法とは異なります)。

ピッカーを初期化する方法は次のとおりです。

self.cameraController = [[UIImagePickerController alloc] init];
self.cameraController.sourceType = UIImagePickerControllerSourceTypeCamera;
self.cameraController.mediaTypes = @[(NSString*)kUTTypeMovie];
self.cameraController.videoQuality = UIImagePickerControllerQualityType640x480;
self.cameraController.delegate = self;

これが私のdidFinishPickingMediaWithInfoものです(ユーザーの写真ライブラリに使用される別のライブラリと共有UIImagePickerControllerされているため、いくつかの無関係なロジックがあります):

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {

    // Dismiss the picker
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad && [picker isEqual:self.photoLibraryController])
        [self.photoLibraryPopover dismissPopoverAnimated:YES];
    else
        [picker dismissModalViewControllerAnimated:YES];

    // Save the media URL
    if (info[UIImagePickerControllerMediaURL])
        [self.uploadDataDictionary setObject:info[UIImagePickerControllerMediaURL] forKey:@"mediaURL"];

    // Identify the source of the media (camera or library)
    [self.uploadDataDictionary setObject:picker forKey:@"sourcePicker"];

    // If it comes from the camera picker, save the video in the library
    NSString *videoPath = [info[UIImagePickerControllerMediaURL] path];
    if ([picker isEqual:self.cameraController] && UIVideoAtPathIsCompatibleWithSavedPhotosAlbum(videoPath)) {
        UISaveVideoAtPathToSavedPhotosAlbum(videoPath, self, nil, nil);
    }

}

そして、上記の奇妙さを引き起こすテキストフィールドのタップ反応:

- (void)textFieldDidBeginEditing:(UITextField *)textField {
    float textFieldPosition = textField.frame.origin.y - 20;
    [self.formView setContentOffset:CGPointMake(0, textFieldPosition) animated:YES];
}

アプリのその部分には他にもたくさんのボタンとテキストビューがありますが、どれもこの奇妙な「バックグラウンドレコーディング」モードに入ることができません。

また、私は明らかにこのプロジェクトにARCを使用しています。

問題の原因は何でしょうか?

4

0 に答える 0