0

このような別のUITableViewControllerクラス(たとえばTable1)からUITableViewController(たとえばTable2)クラスをモーダルに作成して提示します。

-(void)createTable2 {
     Table2Controller *table2Controller = [ [Table2Controller alloc] initWithStyle:UITableViewStyleGrouped];
     UINavigationController * nav = [[UINavigationController alloc] initWithRootViewController:table2Controller];
     [self.navigationController presentModalViewController:nav animated:YES];
     [nav release];
     [table2Controller release];
}

したがって、Table2が表示されます。セルとしていくつかのUITextFieldがあるため、touchesBeganメソッドを使用してTable2のキーボードを辞任したいと思います。Table2の.hファイルにUITextFieldDelegateプロトコルを含めました。

しかし、これらのtouchesBeganメソッドはUIViewでのみ機能し、UIViewControllerでは機能しないことを私は知っていました(私は正しいですか?)。しかし、UIViewを追加してからそのUIViewにTable2を追加して何かを行う場所と方法(createTable2関数自体で試しました。機能しません)がわかりません...アドバイス...

4

2 に答える 2

1

テーブルビューコントローラには、テーブルビュープロパティがあります。テーブルビューをサブクラス化してから、などのメソッドをオーバーライドできます-touchesBegan:withEvent:。カスタムテーブルビューをインスタンス化し、このインスタンスをviewプロパティに設定します。

于 2011-07-18T12:37:45.200 に答える
0

UIViewControllerは、画面に表示されるUIViewおよびその他のUI要素を制御します。これらの要素はすべて、サブクラス化されているUIResponderクラスのおかげでタッチに応答できます。

Table2Controllerを使用してtouchesBeganメソッドをオーバーライドし、このviewController内の任意のUI要素で発生するタッチイベントを制御します。

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
        [inputTV resignFirstResponder];
    [super touchesBegan:touches withEvent:event];
}

タッチが応答チェーンを上に移動できるように、常にスーパーメソッド宣言を呼び出すことに注意してください。

于 2011-07-18T12:40:44.303 に答える