在 UITableView 页脚或页眉中添加 UIButton

Posted

技术标签:

【中文标题】在 UITableView 页脚或页眉中添加 UIButton【英文标题】:Add UIButton in UITableView Footer or Header 【发布时间】:2011-10-10 10:41:26 【问题描述】:

我在 UITableView Header 中添加了一个带有按钮的视图。我已经正确设置了高度,当没有显示键盘时,按钮实际上是有效的。当按下某些文本字段(单元格中的 UITextField)时,将显示键盘,并且我已将表格视图框架设置为较小,因此可以单击单元格,但问题是按钮 - 当按钮与表格视图中的一些相交时(按钮未完全显示时),按钮不起作用,按钮完全显示时起作用。

我已经尝试通过将按钮放置在滚动视图中而不是放置在页脚或表格视图标题中,它完美地工作。这是某种 UITableView 标头错误吗?可以修吗?

【问题讨论】:

【参考方案1】:

在您的代码中添加以下内容:

-(BOOL)textFieldShouldEndEditing:(UITextField *)textField


      if(textField.tag != [[[yourTable indexPathsForVisibleRows] objectAtIndex:0]row])
          [self animateTextField: textField up: NO];
    return YES;


- (void)textFieldDidBeginEditing:(UITextField *)textField


    if(textField.tag != [[[yourTable indexPathsForVisibleRows] objectAtIndex:0]row])
    [self animateTextField: textField up: YES];


- (void) animateTextField: (UITextField*) textField up: (BOOL) up

    const int movementDistance = 300; // tweak as needed
    const float movementDuration = 0.3f; // tweak as needed

    int movement = (up ? -movementDistance : movementDistance);

    [UIView beginAnimations: @"anim" context: nil];
    [UIView setAnimationBeginsFromCurrentState: YES];
    [UIView setAnimationDuration: movementDuration];
    self.view.frame = CGRectOffset(self.view.frame, 0, movement);
    [UIView commitAnimations];

【讨论】:

这段代码是干什么用的?我应该把它放在哪里?你能解释一下为什么会这样吗? 此代码用于在按下键盘文本字段并出现键盘时调整视图框架。将它放在您遇到问题的 viewController 中。

以上是关于在 UITableView 页脚或页眉中添加 UIButton的主要内容,如果未能解决你的问题,请参考以下文章

Word2016(2013)怎么从任意页插入起始页码

以页眉样式呈现的 UItableView 页脚

UITableView 页眉和页脚高度与 Storyboard 布局不对应

限制 UItableView 的页眉和页脚的视图宽度

边框页脚和页眉长度调整为 s-s-rS

动画 UITableView 的页眉和页脚