gpt4 book ai didi

iphone - 更改 UITableView 的 contentInset 而不更改其 contentOffset?

转载 作者:可可西里 更新时间:2023-11-01 03:49:48 33 4
gpt4 key购买 nike

我想在 iPhone 上创建一个类似于 Apple 的消息应用程序的用户界面。我有一个 TableView 和它下面的文本字段。当我选择文本字段时,我会在键盘向上滑动时为表格 View 的 contentInset 设置动画,以便内容显示在键盘上方。

我有一些代码使用平移手势识别器来检测用户何时向下滚动表格 View 并在发生这种情况时为键盘向下设置动画(如果您看到 Apple 的消息应用程序,它具有关闭键盘的相同功能。您在表格 View 上向下滚动,当您的手指滑过文本字段时,键盘会随之下降)。

这很好用,但是如果表格 View 滚动到顶部并且我在键盘向下滑动时开始更改其内容插入,表格 View 滚动到顶部然后快速回到顶部导致奇怪的不稳定动画。我认为这是因为如果表格 View 滚动到顶部,更改 contentInset 会将 contentOffset 重置为表格 View 的顶部,这让它表现得很奇怪。

有谁知道如何在不更改 contentOffset 的情况下更改 ScrollView 的 contentInset?

最佳答案

我设法通过一个小的变通办法让一切都完美地工作。我刚刚这样做了:

// in a method that gets repeatedly called as the pan gesture recognizer changes
if([tableView contentOffset].y > 0) {
UIEdgeInsets insets = [tableView contentInsets];
inset.bottom = currentKeyboardHeight;
[tableView setContentInset:inset];
}

这样,如果 contentOffset 位于最顶部或滚动超过顶部,则插图不会更改。如果表格向下滚动一点并拖动,它会更改插图,直到它到达顶部,然后停止更改它们,这样就不会发生奇怪的闪烁。


编辑:找出根本原因并认为我会更新它而不是仅仅留下解决方法。我所做的是在我的帧计算中间混合一个 CGAffineTransformMakeTranslation,根据 Apple 文档,这是一个很大的禁忌。当 transform 属性不是 CGAffineTransformIdentity 时,frame 变为未定义,如果我滚动 TableView 并更改,这会导致一些非常奇怪的行为它的内容同时插入。

关于iphone - 更改 UITableView 的 contentInset 而不更改其 contentOffset?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11516081/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com