1

nibファイルで定義されたUITableView tableHeaderViewがあります。tableHeaderView には UITextView が含まれています。UITextView のデリゲートは UITableViewController に設定され、UITableViewController は UITextViewDelegate プロトコルをサポートします。UITableViewController は、UITextView のテキストを含む tableHeaderView のさまざまなプロパティを設定しており、すべて正常に動作します。しかし、UITableViewController の textFieldShouldReturn:(UITextField *)textField が呼び出されることはなく、UITextView をタップした後にキーボードを閉じることができません。

ドキュメントやさまざまな投稿で見つけることができるすべての提案を試しましたが、うまくいきません。私が見つけた例には、tableHeaderView 内の UITextView のこの特定のケースはありません。

私がしなければならない特別なことはありますか?誰もこれを成功させましたか?

コードで UITextView デリゲートを設定しようとしましたが、うまくいきませんでした。

@class Decision;

@interface DecisionDetailViewController : UITableViewController <UINavigationControllerDelegate, UITextViewDelegate> {

    Decision *decision;

    UIView *tableHeaderView;    
    UITextView *nameTextField;
}

@property (nonatomic, retain) Decision *decision;
@property (nonatomic, retain) IBOutlet UIView *tableHeaderView;
@property (nonatomic, retain) IBOutlet UITextView *nameTextField;

@end


@implementation DecisionDetailViewController

@synthesize decision;
@synthesize tableHeaderView;
@synthesize nameTextField;

- (void)viewDidLoad {
    self.navigationItem.rightBarButtonItem = self.editButtonItem;

    if (tableHeaderView == nil) {
        [[NSBundle mainBundle] loadNibNamed:@"DecisionDetailHeader" owner:self options:nil];
        self.tableView.tableHeaderView = tableHeaderView;
    }
}

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
     [nameTextField resignFirstResponder];
     return YES;
}
4

1 に答える 1

2

textFieldShouldReturn は UITextFieldDelegate のメソッドであり、UITextViewDelegate ではありません。それはおそらくあなたの問題です。

于 2011-06-09T03:03:47.483 に答える