【问题标题】:how to stop UITextView to scroll UITableView如何停止 UITextView 滚动 UITableView
【发布时间】:2012-03-23 05:01:24
【问题描述】:

我有一个只有三个单元格的自定义表格。在第三个单元格中,我有一个 textView。这三个单元格在屏幕上占据了足够的空间,因此只剩下键盘空间。我不希望任何东西是可移动或可滚动的,所以我使用了self.tableView.scrollEnabled = NO;

这适用于早期版本的 iOS。然而,在 iOS 5 中,它表现出一些奇怪的行为。当我在 textView 中输入多行文本时,整个表格会向上滚动。理想情况下,表格应该固定在那里,只有 textView 应该滚动。

在尝试了很多事情之后,我发现 textView 被放置在离键盘很近的地方(因为 textView 被放置在最后一个单元格中,而它的正下方是键盘),以至于 iOS 试图将 textView 向上移动,为此它向上滚动整个表格。有什么办法可以阻止 tableView 的自动滚动。

我发现了这里提到的同样的问题 Disable UITextView scrolling the containing view? 但是它也没有得到回答。而且那里提到的解决方法对我不起作用,因为我的包含视图本身是可滚动的 (UITableView)

【问题讨论】:

  • 您找到解决方案了吗?遇到同样的问题。
  • @SteveBaughman:不完全是。我做了一个解决方法。 UITextView 离键盘太近了,因此它被移到了上方。我增加了UITextView 和键盘之间的距离来解决这个问题。我仍在寻找解决此问题的适当方法。

标签: ios xcode uitableview ios5 uitextview


【解决方案1】:

对我来说,我可以像这样在表格视图中滚动

-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    if(self.tableView.contentOffset.y != 0)
    {
        self.tableView.contentOffset = CGPointMake(0, 0);
    }
}

【讨论】:

    【解决方案2】:

    一种解决方案是动态添加一个全新的子视图。将UITextView 添加到self.view 并给它一个对应于屏幕上相同位置的框架。表格视图现在不应滚动。

    如果这不起作用,因为self.view 是表视图,请将您的控制器更改为 UIViewController 类并自己实现委托和数据源方法(即,您必须在 @interface 声明中提及它们)。然后表格视图应该是self.view 的子视图,您必须通过 IB 将其连接起来。

    在关闭键盘之前,将内容复制到原始文本视图。

    【讨论】:

    • 我正在以编程方式将子视图添加到 self.view 中,但是它不起作用。将我的主视图从 UITableViewController 更改为 UIViewController 不是我正在寻找的解决方案。由于这个问题是从 iOS 5 开始的,我相信肯定有一些属性或方法可以设置为停止自动滚动。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-06
    • 1970-01-01
    • 1970-01-01
    • 2012-08-22
    • 2023-03-20
    • 2018-03-09
    • 1970-01-01
    相关资源
    最近更新 更多