gpt4 book ai didi

ios - iOS9 中的 KVO Collection View 内容插图

转载 作者:可可西里 更新时间:2023-11-01 04:50:44 24 4
gpt4 key购买 nike

随着最近发布的 iOS 9,可能需要对现有代码进行一些更新,以补偿对 Apple API 所做的任何更改。最近似乎他们已经做到了,现在 Collection View 会在键盘出现时自动调整其内容插入。这对于不手动处理和/或支持多个操作系统版本的人很有用。在我的应用程序中,它引起了一些头痛。我终于想出了一个解决方案,使用 KVO 在系统更改插图时通知我,我做出相应的 react ,一切正常,除了单个边缘情况。

如果我显示键盘,然后尝试通过交互式滑动返回导航堆栈,导致 beginAppearanceTransition:animated: 被调用,但随后取消它,然后在键盘侧点按辞去第一响应者,系统突然决定它不想自动更新我的插图,并且我的 KVO 永远不会因为内容插图而被触发,键盘消失但内容插图没有减少,导致它看起来太错误了.. .如果我点击导致键盘再次显示的文本字段,它突然决定再次自动更新。

有没有人知道为什么它在取消更新我的插图的交互式转换后忽略了我第一次关闭键盘?

编辑

不得不重新审视这个,因为团队觉得它太脆弱和太老套了,在玩了 this 之后要了解他们如何处理同一案件,他们似乎不必处理来自无处的错误调用。所以我继承了 UICollectionView 并覆盖了 setContentInset 函数,只是为了在这里找到有问题的调用

IMG

除了堆栈跟踪在这一点上不是特别有用,有人知道吗?

最佳答案

由于似乎没有答案,其他人也遇到了这个问题,所以这里要求的是我目前的解决方案。

所以在为 contentInset 添加观察者后,我有以下功能。

static bool _willSystemUpdateCollectionViewInset = NO;
static bool _willCustomKeyboardViewUpdateCollectionViewInset = NO;
static bool _didCancelDismissInteraction = NO;
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context
{
if ([keyPath isEqualToString:NSStringFromSelector(@selector(contentInset))])
{
id oldNumber = change[@"old"];
id newNumber = change[@"new"];

if (_willSystemUpdateCollectionViewInset)
{
_willSystemUpdateCollectionViewInset = NO;
UICollectionView *collectionView = (UICollectionView*)object;
UIEdgeInsets insets = collectionView.contentInset;
insets.bottom = [oldNumber UIEdgeInsetsValue].bottom;

[collectionView setContentInset:insets];
}
else if (_willCustomKeyboardViewUpdateCollectionViewInset)
{
_willCustomKeyboardViewUpdateCollectionViewInset = NO;
[self updateScrollViewInsets];
}

if ([newNumber UIEdgeInsetsValue].bottom > [oldNumber UIEdgeInsetsValue].bottom )
[_messageViewController scrollCollectionViewToBottom:NO];
}
else
{
[super observeValueForKeyPath:keyPath
ofObject:object
change:change
context:context];
}
}

所以在键盘上显示或隐藏标志 _willSystemUpdateCollectionViewInset 设置为 YES,上述函数本质上否定了系统自动所做的更改。

关于ios - iOS9 中的 KVO Collection View 内容插图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32773986/

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