私のコードを壊しているiOS 4.3とiOS 5.0の間でUITextFieldDelegateプロトコルがどのように動作するかについて、文書化されていない変更があるようです。UITextFieldDelegateプロトコルが、iOS 4.3と5.0の間で変更されました。何が起こっていますか?
単純に次のように再現してください。 XCode 4.2を使用して、testという名前の「単一ビューアプリケーション」プロジェクトを作成します。
:ViewController.hヘッダー・ファイルにこのコードを入れてに(ので、我々は5.0と4.3の両方でアプリケーションを実行することができます)4.3に 設定デプロイメント・ターゲット(ARCにすなわちいいえストーリーボードが、はい)デフォルトのオプションを使用します
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController <UITextFieldDelegate>
@property(nonatomic,strong) UITextField *textField1;
@property(nonatomic,strong) UITextField *textField2;
@property(nonatomic,strong) UILabel *resultsLabel;
@end
ViewController.mファイルでこれを入れて:
#import "ViewController.h"
@implementation ViewController
@synthesize textField1,textField2,resultsLabel;
- (void)viewDidLoad {
textField1=[[UITextField alloc] initWithFrame:CGRectMake(10, 10, 300, 30)];
textField1.tag=1;
textField1.backgroundColor=[UIColor whiteColor];
textField1.delegate=self;
[self.view addSubview:textField1];
textField2=[[UITextField alloc] initWithFrame:CGRectMake(10, 50, 300, 30)];
textField2.tag=2;
textField2.backgroundColor=[UIColor whiteColor];
textField2.delegate=self;
[self.view addSubview:textField2];
resultsLabel=[[UILabel alloc] initWithFrame:CGRectMake(10, 90, 300, 30)];
resultsLabel.backgroundColor=[UIColor clearColor];
[self.view addSubview:resultsLabel];
[super viewDidLoad];
}
-(void)textFieldDidEndEditing:(UITextField *)textField {
switch (textField.tag) {
case 1:
// textField1
[textField2 becomeFirstResponder];
[email protected]"Finished editing 1st box";
break;
case 2:
// textField2
[email protected]"Finished editing 2nd box";
break;
}
}
@end
実行シミュレータ内のコードと、それは、二つの白いUITextFieldsを表示します。最初のものをタップし、もう1つをタップします。
シミュレータ上でのiOS 5.0でUILabelディスプレイを実行する場合、私はそれをしようとしています
「第二のボックスの編集が完了し、」 「第一ボックスの編集を終え、」UILabelディスプレイシミュレータ上でのiOS 4.3で実行している場合フィールドiを離れると自動的にフィールド(i + 1)に移動します。何が間違っているのか、それを修正する方法についての提案はありますか? AppleのiOS 5リリースノートには何の言及も見当たりません。
この方法には問題があります:キーボードをどうやって消したいのですか? –
Thanks v much(正解として受け入れられました:-)私が書いている実際のコードはtextFieldShouldReturnにも反応しますので、field1で 'enter'をタップすると自動的にfield2に行きます - したがって、ある時点でプログラムで設定する必要があります。 iOS4.3と5.0が違うことをしているのは間違いです。あたかも4.3がtextFieldからfirstResponderを辞任したのに対し、5.0はfirstResponderを何とか辞めてしまったようです.....もう一度ありがとうございます。 – Peter