私は2つのUITextFieldと1つのボタンを持つフォームを持っています。ユーザーは2つのフィールドに値を入力し、ボタンをクリックします。これにより、UIImagePickerControllerが表示され、写真を撮ることができます。画像のプレビューで "使用"ボタンをクリックすると、UIImagePickerControllerは終了しますが、2つのUITextFieldに入力されたテキストはなくなります。これはIPhone(IPadではなく)でのみ発生し、カメラロールから画像を選択するのではなく、ユーザがカメラを使用するときにのみ発生します。ここにコードがあります。UITextfieldsはUIImagePickerControllerを表示した後に空白です
-(IBAction)btnTakePic {
if([UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypeCamera]) {
UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
imagePicker.delegate = self;
imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
imagePicker.mediaTypes = [NSArray arrayWithObjects: (NSString *) kUTTypeImage, nil];
imagePicker.cameraDevice = UIImagePickerControllerCameraDeviceRear;
imagePicker.allowsEditing = NO;
[self presentModalViewController: imagePicker animated:YES];
[imagePicker release];
}
else if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeSavedPhotosAlbum])
{
UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
imagePicker.delegate = self;
imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
imagePicker.mediaTypes = [NSArray arrayWithObjects:(NSString *) kUTTypeImage, nil];
imagePicker.allowsEditing = NO;
[self presentModalViewController:imagePicker animated:YES];
[imagePicker release];
}
}
私は、デバッガを通じて強化しているとピッカーDidFinishPickingWithMediaInfoに入ると、テキストフィールドはすでに空白なので、問題はそこで発生することが表示されません。 IPadは4.3.3、IPhoneは4.2.1、アプリケーションはXCode 4で開発されています。4.3はベースsdk、4.2はデプロイメントターゲットです。どんな助けもありがとうございます。
私は同じことを推測します。 @Bob:viewDidUnloadにブレークポイントを設定することでこれを確認できます。ビューコントローラの場合、メモリ警告があり、ビューがアンロードされた場合に呼び出されます。 – progrmr
Simonとprogrmr - 両方のおかげです。それはまさに何が起きているのかです。私はまだIOS開発にかなり新しいです。しかし、私の質問は、私はこのメモリ警告(それはレベル1だった)に気を付ける必要がありますか、これはちょうど何かカメラに関連していて、私はそれを無視することができますか? – Bob
@Bobこれは完全に正常です。実際、メモリの警告は、必要でないメモリを解放する機会を与えるためのものです。これは標準的なメカニズムです。カメラが動作するために必要なメモリは大きく、アプリケーションの信用度が非常に低い場合を除き、警告が表示されます。レベル2の警告はより深刻で、あなたが本当にメモリを解放する必要がある場合は、システムがアプリケーションを撃退する前の最後の作業です。システムがレベル1で十分なメモリを回収できない場合は、警告を無視したり、必要のないものをリリースしたり、再ロードすることはできません。レベル2になります。 –