UIIextFieldはUIImagePickerControllerを表示した後に空白になります

私は2つのUITextFieldとボタンを持つフォームを持っています。ユーザーは2つのフィールドに値を入力し、ボタンをクリックします。これにより、UIImagePickerControllerが表示され、写真を撮ることができます。画像のプレビューで "使用"ボタンをクリックすると、UIImagePickerControllerは終了しますが、2つのUITextFieldに入力されたテキストはなくなります。これはIPhone(IPadではなく)でのみ発生し、カメラロールから画像を選択するのではなく、ユーザがカメラを使用するときにのみ発生します。ここにコードがあります。

-(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はデプロイメントターゲットです。どんな助けもありがとうございます。

0

1 答え

私はあなたがメモリ警告(カメラを使用するときに共通)を取得していると思うだろうし、ビューは(ビューアから戻った後に)ビューがデフォルト状態になっているときに、ビューがアンロードされています。

テキストフィールドのテキストプロパティを目的の値に設定した場合は、値があればviewDidLoadチェックでボックスの値を入力し(変数に)入力して保存する必要があります。

コンソールをチェックすると、おそらくメモリ警告レベル1(または多分2)

2
追加された
@Bobこれは完全に正常です。実際、メモリの警告は、必要でないメモリを解放する機会を与えるためのものです。標準的なメカニズムです。カメラが動作するために必要なメモリは大きく、アプリケーションの信用度が非常に低い場合を除き、警告が表示されます。レベル2の警告はより深刻で、あなたが本当にメモリを解放する必要がある場合は、システムがアプリケーションを撃退する前の最後の作業です。システムがレベル1で十分なメモリを回収できない場合は、警告を無視したり、必要のないものをリリースしたり、再ロードすることはできません。レベル2になるでしょう。
追加された 著者 Simon Lee,
私は同じことを疑う。 @Bob:viewDidUnloadにブレークポイントを設定することでこれを確認できます。ビューコントローラの場合、メモリ警告があり、ビューがアンロードされた場合に呼び出されます。
追加された 著者 progrmr,
Simonとprogrmr - 両方のおかげです。それはまさに何が起きているのかです。私はまだIOS開発にかなり新しいです。しかし、私の質問は、私はこのメモリ警告(それはレベル1だった)に気を付ける必要がありますか、これはちょうど何かカメラに関連していて、私はそれを無視することができますか?
追加された 著者 Bob,