【问题标题】:Auto Scroll with UITableView使用 UITableView 自动滚动
【发布时间】:2012-12-27 06:48:34
【问题描述】:

我正在制作一个 ipad 应用程序。在应用程序中,我有一个 UITableView,其中包含用户可以输入的自定义单元格。唯一的问题是,当您按下下方的一个单元格时,键盘会升起并挡住该单元格,因此您看不到它。我想要这样,所以当您按下键盘上方的单元格时, UITableView 向上滚动并一遍又一遍地显示 1 个单元格,以便您可以看到您正在输入的内容。谢谢。

图片:http://i.stack.imgur.com/Kn4CT.png

【问题讨论】:

    标签: xcode ipad uitableview


    【解决方案1】:

    假设您正在输入一个 uitextfield,请实现 textfield 委托方法。

    计算键盘显示时的键盘高度。

    编辑:

    这就是我解决问题的方法:

    使用唯一编号标记每个文本文件(保留一个 baseConstantInteger,确保您的标记绝对唯一)。

    baseConstant 可以是任何东西,假设baseConstantInteger = 500;

    对于cellForRowAtIndexPath 方法中的每个单元格,在您的自定义单元格中设置

    textField.tag = baseConstantInteger+indexPath.row
    

    然后

    - (void)textFieldDidBeginEditing:(UITextField *)textField
    {   
        int clickedRow = textField.tag - baseConstantInteger;
        [self.theTableView scrollToRowAtIndexPath:(indexPath based on clickedRow) atScrollPosition:UITableViewScrollPositionMiddle animated:NO];
        [UIView animateWithDuration:0.4
                         animations:^{
                             theTableView.frame = CGRectMake(theTableView.frame.origin, theTableView.contentSize.width, theTableView.frame.size.height-keyBoardHeight);
                         }
         ];
    }
    

    返回时(与 didEndEditing 类似)

    - (BOOL)textFieldShouldReturn:(UITextField *)textField {
        [UIView animateWithDuration:0.2
                         animations:^{
                             theTableView.frame = CGRectMake(theTableView.frame.origin, theTableView.contentSize.width, theTableView.frame.size.height+keyBoardHeight);
                         }
         ];
        [textField resignFirstResponder];
        return NO/YES;
    }
    

    ps: baseConstantInteger 只是为了保证你的标签安全。它不是绝对必要的。

    【讨论】:

    • 我输入了关于它是自定义单元格的信息,因为 UITextField 在自定义单元格中......这是在不同的视图中,这意味着我无法通过 UITableView 所在的视图访问它在
    • 感谢您的快速响应,但是,我要访问的 TextField 在另一个视图中 (flightDetialCell)。如何从我当前所在的视图访问 TextField?谢谢大家
    • 访问文本字段是什么意思?我不知道“另一个视图”和“flightDetailCell”。您必须发布更多代码或进一步澄清您的问题
    猜你喜欢
    • 1970-01-01
    • 2016-02-19
    • 2019-09-28
    • 1970-01-01
    • 1970-01-01
    • 2014-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多