0

我已经直接在图书馆的 github 页面 ( https://github.com/lxcid/LXReorderableCollectionViewFlowLayout/issues/43 ) 上发布了这个问题,但我想我会在这里获得更多曝光。

我已按如下方式实现了该库:

LXReorderableCollectionViewFlowLayout *layout = [[LXReorderableCollectionViewFlowLayout alloc] init];
[collection setCollectionViewLayout:layout];

其中collection 是UIViewController 中的一个UICollectionView,我手动选择了它。拖放和重新排序可以使用 itemAtIndexPath:fromIndexPath willMoveToIndexPath:toIndexPath 函数正常工作。

但是,一旦我关闭视图控制器:

[self dismissViewControllerAnimated:YES completion:nil];

我遇到了 Thread 1: EXEC_BAD_ACCESS (code=1) 错误。

错误发生在这里:

@autoreleasepool {
    return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}

bt 显示:

frame #0: 0x019130b2 libobjc.A.dylib`objc_msgSend + 14
frame #1: 0x01bab735 CoreFoundation`-[NSSet makeObjectsPerformSelector:withObject:] + 277
frame #2: 0x0087f902 UIKit`-[UIGestureRecognizer dealloc] + 127
frame #3: 0x008952a5 UIKit`-[UILongPressGestureRecognizer dealloc] + 174

其他人遇到的类似问题(https://github.com/lxcid/LXReorderableCollectionViewFlowLayout/issues/32)有回应:

发生崩溃是因为当从集合视图中移除布局时,集合视图上设置的手势识别器永远不会被移除。因此,当一个手势发生时,识别器会尝试调用委托方法gestureRecognizerShouldBegin:在现在已经被释放的布局上。

但我不确定这意味着什么或如何解决它,如果它是同一个问题。

任何帮助是极大的赞赏。

4

1 回答 1

0

我仍然不确定是什么原因造成的,但我通过更改为 github 源而不是使用 cocoapods 解决了这个问题。我的 cocoapod 版本是 0.1.0.beta1 (我从https://www.cocoacontrols.com/controls/lxreorderablecollectionviewflowlayout获得),我猜它已经过时了。

于 2013-10-25T22:23:39.477 回答