防止搜索栏退出第一响应者 SWIFT 4.2
Prevent Search bar from resigning being first responder SWIFT 4.2
我的 collection 视图 header 中有一个搜索栏,我希望能够根据用户类型过滤内容。问题是,每次我在搜索栏的 textDidChange 事件中重新加载 collection 视图时,collection 视图成为第一响应者并且搜索栏退出,从而隐藏键盘。
我已经检查了所有的答案;
UICollectionView reloadData resigns first responder in section header
How to filter UICollectionView and keep keyboard up?
以及任何其他可能相关但未能找到答案的帖子。
如果你们能提供帮助,我将非常高兴。
提前致谢
我找不到解决此问题的任何合适方法,因此我将搜索栏添加到我的主视图并将其高度值与我的 collection 视图 didscroll 事件同步。
如果有人感兴趣,这里是代码片段。
let offset = self.collectionView.contentOffset
let y = offset.y
if lastContentOffset > scrollView.contentOffset.y && lastContentOffset < scrollView.contentSize.height - scrollView.frame.height {
// move up
if self.cst_searchBarHeight.constant == 0 && y <= 0{
self.cst_searchBarHeight.constant = self.searchBarHeight
UIView.animate(withDuration: 0.4, delay: 0.0, options: [.curveEaseInOut], animations: {
self.view.layoutIfNeeded()
}, completion: nil)
}
} else if lastContentOffset < scrollView.contentOffset.y && scrollView.contentOffset.y > 0 {
// move down
if self.cst_searchBarHeight.constant != 0{
self.cst_searchBarHeight.constant = 0
UIView.animate(withDuration: 0.4, delay: 0.0, options: [.curveEaseInOut], animations: {
self.view.layoutIfNeeded()
}, completion: nil)
}
}
// update the new position acquired
lastContentOffset = scrollView.contentOffset.y
}
我从下面的答案中得到了灵感,它找出了 collection 视图的滚动方向
How can I detect the scroll direction from the UICollectionView?
我的 collection 视图 header 中有一个搜索栏,我希望能够根据用户类型过滤内容。问题是,每次我在搜索栏的 textDidChange 事件中重新加载 collection 视图时,collection 视图成为第一响应者并且搜索栏退出,从而隐藏键盘。
我已经检查了所有的答案;
UICollectionView reloadData resigns first responder in section header
How to filter UICollectionView and keep keyboard up?
以及任何其他可能相关但未能找到答案的帖子。 如果你们能提供帮助,我将非常高兴。
提前致谢
我找不到解决此问题的任何合适方法,因此我将搜索栏添加到我的主视图并将其高度值与我的 collection 视图 didscroll 事件同步。
如果有人感兴趣,这里是代码片段。
let offset = self.collectionView.contentOffset
let y = offset.y
if lastContentOffset > scrollView.contentOffset.y && lastContentOffset < scrollView.contentSize.height - scrollView.frame.height {
// move up
if self.cst_searchBarHeight.constant == 0 && y <= 0{
self.cst_searchBarHeight.constant = self.searchBarHeight
UIView.animate(withDuration: 0.4, delay: 0.0, options: [.curveEaseInOut], animations: {
self.view.layoutIfNeeded()
}, completion: nil)
}
} else if lastContentOffset < scrollView.contentOffset.y && scrollView.contentOffset.y > 0 {
// move down
if self.cst_searchBarHeight.constant != 0{
self.cst_searchBarHeight.constant = 0
UIView.animate(withDuration: 0.4, delay: 0.0, options: [.curveEaseInOut], animations: {
self.view.layoutIfNeeded()
}, completion: nil)
}
}
// update the new position acquired
lastContentOffset = scrollView.contentOffset.y
}
我从下面的答案中得到了灵感,它找出了 collection 视图的滚动方向 How can I detect the scroll direction from the UICollectionView?