MJRefresh icon indicating copy to clipboard operation
MJRefresh copied to clipboard

设置 navigationItem.searchController = searchController, 循环调用导致崩溃

Open kaich opened this issue 6 years ago • 8 comments

描述bug 当self.navigationItem.searchController = searchController时候,正在加载的时候,上滑动tableview导致崩溃。 如下几个函数造成死循环 ``

  • (void)setMj_insetT:(CGFloat)mj_insetT
  • (void)resetInset
  • (void)scrollViewContentOffsetDidChange:(NSDictionary *)change
  • (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context

**必现/偶发?**
必现

**怎么样重现这个bug**
下拉刷新

**你期望的结果是什么?**
不崩溃

**运行环境**
 - iPhone7
 - iOS12.3
 - Xcode12

**额外的**
最好能提供出现bug的Demo

kaich avatar Jul 12 '19 03:07 kaich

请提供一个demo

wolfcon avatar Jul 12 '19 04:07 wolfcon

@wolfcon 我就是用项目提供的Demo啊, 在MJTableViewControllerViewDidLoad里面添加如下代码就行了。

    MJCollectionViewController* vc = [[MJCollectionViewController  alloc] init];
    UISearchController * searchController = [[UISearchController alloc] initWithSearchResultsController: vc];
    self.navigationItem.searchController = searchController;

kaich avatar Jul 12 '19 05:07 kaich

我也遇到类似情况了,刷新跟hidesSearchBarWhenScrolling属性冲突。 hidesSearchBarWhenScrolling可能会不断更改ContentSize,导致循环调用

ygfygf avatar Jul 18 '19 11:07 ygfygf

@ygfygf 方便更详细的描述一下复现的步骤吗?

kinarobin avatar Aug 09 '19 11:08 kinarobin

@ygfygf 你是否使用了Auto呢, 你切换成Normal试下

13104495959 avatar Sep 04 '19 06:09 13104495959

是的,我也遇到了,应用在 uicollectionview 就会进入死循环

wpcfan avatar Oct 14 '19 00:10 wpcfan

怎么解决啊,有大佬知道吗

ieliwb avatar Mar 10 '20 14:03 ieliwb

self.navigationItem.hidesSearchBarWhenScrolling = NO; 这样子就好了。setMj_insetT方法被循环调用了。设置这个属性后导航栏搜索框固定位置,就不会出现循环调用了

min554357332 avatar Apr 26 '20 08:04 min554357332