我的uitextfield为什么不打开键盘?

时间:2012-06-17 20:45:26

标签: ios uitableview

由于某种原因,无法选择我的节标题中的搜索字段以调出键盘。此外,我的表格视图单元格上没有任何内容,我不知道为什么。我的代码如下:

- (void)viewDidLoad {
  [super viewDidLoad];  

  self.view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];

  self.tableView = [[UITableView alloc] initWithFrame:self.view.frame style:UITableViewStylePlain];
  self.tableView.delegate = self;
  [self.view addSubview:self.tableView];
}

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
  [self.searchField resignFirstResponder];

  return NO;
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
  return 1;
}

- (NSInteger)tableView:(UITableView *)tableView
 numberOfRowsInSection:(NSInteger)section {
  return 8;
}

- (CGFloat)tableView:(UITableView *)tableView
heightForRowAtIndexPath:(NSIndexPath *)indexPath {
  return 60;
}

- (UIView *)tableView:(UITableView *)tableView
viewForHeaderInSection:(NSInteger)section {

  UIView *customHeader = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 50)];

  // Add search field
  UITextField *field = [[UITextField alloc] initWithFrame:CGRectMake(40, 20, 250, 50)];
  field.borderStyle = UITextBorderStyleRoundedRect;
  field.delegate = self;
  [customHeader addSubview:field];

  return customHeader;
}

- (UITableViewCell *)tableView:(UITableView *)tableView
         cellForRowAtIndexPath:(NSIndexPath *)indexPath {
  NSString *cellIdentifier;

  UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
  if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier];

    NSLog(@"i am here");

    UITextField *field = [[UITextField alloc] initWithFrame:CGRectMake(40, 20, 250, 50)];
    field.borderStyle = UITextBorderStyleRoundedRect;
    field.delegate = self;
    [cell.contentView addSubview:field];
  }

  return cell;
}

2 个答案:

答案 0 :(得分:1)

我认为它不起作用,因为您没有为该部分指定标题高度。你应该有像

这样的东西
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
  return 50.0;
}

如果您确定有多个部分,则仅针对所需部分执行此操作。

答案 1 :(得分:0)

为什么不使用nib文件或故事板?根据apple文档,如果你无法从storyboard或nib文件加载uiviewcontroller视图,你应该覆盖

-loadView

设置视图层次结构的方法。 Read view management section这可能会解决您的搜索字段问题。 解决第二个问题设置cellidentifier

NSString *cellIdentifier = @"Your identifier";

我不认为它可以是零。 我希望,我的回答会有所帮助。如果没有,请发表评论。