2011-10-27 6 views
0

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

答えて

2

カメラの使用時にメモリの警告が表示され、ビューがアンロードされていると思われます。ビューは(イメージピッカーから戻った後に)ビューがデフォルトの状態になっているときに空になります。

テキストフィールドのテキストプロパティを目的の値に設定した場合は、値を入力すると、変数が入力されたときにボックスの値を格納し、次に値を持っているかどうかviewDidLoadチェックで保存する必要があります。

コンソールを確認すると、おそらくメモリ警告レベル1(または多分2)が表示されます

+0

私は同じことを推測します。 @Bob:viewDidUnloadにブレークポイントを設定することでこれを確認できます。ビューコントローラの場合、メモリ警告があり、ビューがアンロードされた場合に呼び出されます。 – progrmr

+0

Simonとprogrmr - 両方のおかげです。それはまさに何が起きているのかです。私はまだIOS開発にかなり新しいです。しかし、私の質問は、私はこのメモリ警告(それはレベル1だった)に気を付ける必要がありますか、これはちょうど何かカメラに関連していて、私はそれを無視することができますか? – Bob

+0

@Bobこれは完全に正常です。実際、メモリの警告は、必要でないメモリを解放する機会を与えるためのものです。これは標準的なメカニズムです。カメラが動作するために必要なメモリは大きく、アプリケーションの信用度が非常に低い場合を除き、警告が表示されます。レベル2の警告はより深刻で、あなたが本当にメモリを解放する必要がある場合は、システムがアプリケーションを撃退する前の最後の作業です。システムがレベル1で十分なメモリを回収できない場合は、警告を無視したり、必要のないものをリリースしたり、再ロードすることはできません。レベル2になります。 –

関連する問題