【问题标题】:resizing tableview when keyboard is shown and hidden显示和隐藏键盘时调整表格视图的大小
【发布时间】:2012-04-19 13:48:07
【问题描述】:

我有一个带有 UITableView 和 UITextField 的视图控制器。我订阅了有关键盘何时打开和关闭的通知,并使用有关键盘高度的信息来调整 UITableView 和 UITextField 的大小和位置。

但是我有两个问题。

当键盘打开时,UITextField 似乎会自动重新定位 - 如果它定位正确,那就没问题了。它的垂直偏移似乎与 Tab Bar Controller 的高度相同。

如何禁用 UITextField 在键盘打开时尝试重新定位它?

第二个问题是,当键盘打开时,UITableView 的表格部分似乎太长了——我可以滚动到表格中最后一个元素的下方(我猜类似于键盘的高度)。打开键盘时,我像这样设置 UITableView 的新高度(kbSize 是键盘的大小):

CGSize size = self.view.frame.size;
self.tableView.frame = CGRectMake(0,0f, 0,0f, size.width, size.height - kbSize.height);

我在这里缺少什么?我是否需要设置表格的“高度”而不仅仅是框架?

谢谢,奥莱

【问题讨论】:

    标签: iphone ios uitableview keyboard uitextfield


    【解决方案1】:

    如果您将父类从UIViewController 更改为UITableViewController,则在键盘显示时调整视图大小将由操作系统完成。

    【讨论】:

      【解决方案2】:

      当键盘弹出时,您只需使用 1 个 viewcontroller 类并放入 tableview 开玩笑地设置 viewcontroller 框架为 y = y-140...... 像这样

      -(BOOL)textFieldShouldBeginEditing:(UITextField *)textField{
          [UIView beginAnimations:nil context:NULL];
          [UIView setAnimationDuration:0.3];
          [UIView setAnimationTransition:UIViewAnimationTransitionNone forView:self.view cache:YES];
      
          scrollView.frame = CGRectMake(0, -140, 320, 460);
          [UIView commitAnimations];
          return YES;
      }
      -(BOOL)textFieldShouldReturn:(UITextField *)textField{
          [UIView beginAnimations:nil context:NULL];
          [UIView setAnimationDuration:0.3];
          [UIView setAnimationTransition:UIViewAnimationTransitionNone forView:self.view cache:YES];
          scrollView.frame = CGRectMake(0, 0, 320, 460);
          [UIView commitAnimations];
          [textField resignFirstResponder];
          return YES;
      }
      

      【讨论】:

        猜你喜欢
        • 2012-04-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-09
        • 1970-01-01
        相关资源
        最近更新 更多