我在 nib 文件中定义了一个 UITableView tableHeaderView。tableHeaderView 包含一个 UITextView。UITextView 的委托设置为 UITableViewController 并且 UITableViewController 支持 UITextViewDelegate 协议。UITableViewController 正在 tableHeaderView 中设置各种属性,包括 UITextView 的文本,并且一切正常。但是 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;
}