3

この本を使って iOS SDK を勉強していて、第 4 章で、バックグラウンド タップでテンキーを非表示にする方法を教えてもらったときに問題が発生しました。私はその著者が言うことをしますが、何も起こりませんでした。どうすればこれを行うことができますか?本の著者の言葉:

1) ViewController.h に新しいメソッド backgroundTap を作成します。

- (IBAction)touchBackground:(id)sender;

2)ViewController.mにメソッドを追加

-(void)touchBackground:(id)sender{
[nameField resignFirstResponder];
[numberField resignFirstResponder];}

3)Interface BuilderのViewオブジェクトのクラスIDを変更します(Xcode 4のコントロールで理解しているように)UIViewからUIControlに変更します

4) イベントリストの TouchDown メソッドを File's Owner に接続し、メソッド backgroundTap を確認します。

これは私のコードサンプルです

PS 英語で申し訳ありません。ロシア語に翻訳してもらったので、本からすべての情報を英語に翻訳しました。

4

3 に答える 3

5

次のようなメソッドを実装するだけで、これを簡単にできると思います。

- (IBAction)backgroundTouched:(id)sender {
    [self.view endEditing:YES];
}

UIControlインターフェイスビルダーではなくバックグラウンドビューを作成しUIView、タッチアップイベントをこのメソッドにフックします。

この小さなサンプル プロジェクトを見てください。secondViewController背景に触れるとキーボードが消えた場所で、まさにこれを行いました。UIControl背景をインに変更した方法も確認できますsecondViewController.xib

于 2011-12-24T19:13:46.070 に答える
3

背景ビューを変更せずに試してみたいことは次のとおりです。

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    [nameField resignFirstResponder];
    [numberField resignFirstResponder];
}
于 2011-12-24T19:17:49.093 に答える
1

ステップ 4 (「イベント リストの TouchDown メソッドをファイルの所有者に接続し、メソッド backgroundTap を確認する」) を誤って実行した可能性があります。touchBackground メソッドに NSLog を含めて、メソッドが呼び出されているかどうかを確認します。

-(void)touchBackground:(id)sender{
[nameField resignFirstResponder];
[numberField resignFirstResponder];
NSLog(@"touchBackground was called");
}

メッセージ (「touchBackground が呼び出されました」) がコンソールに表示されない場合は、touchBackground が呼び出されていないことがわかります。

于 2012-01-04T17:22:08.250 に答える