我正在为 iOS
开发社交媒体应用我的ViewControllers
目前已嵌入NavigationController
。
在我的新闻提要屏幕上,我需要在用户向下滑动时显示搜索栏(并在他向上滑动时隐藏它),其中如果用户输入内容,搜索结果将显示在新闻提要屏幕的顶部。
我试图修补此问题,但我对iOS很陌生,到目前为止还没有成功实现这一点。
任何帮助都会受到赞赏,请记住,我只对iOS进行了几周的编程,因此深入一些会有所帮助。 谢谢!
答案 0 :(得分:3)
首先,您需要实施UISwipeGestureRecognizer
在setup()
viewDidAppear
功能
func setup() {
let swipeDown = UISwipeGestureRecognizer(target: self, action: #selector(down))
swipeDown.direction = .down
let swipeUp = UISwipeGestureRecognizer(target: self, action: #selector(up))
swipeUp.direction = .up
self.view.addGestureRecognizer(swipeDown)
self.view.addGestureRecognizer(swipeUp)
searchBar = UISearchBar(frame: CGRect(x: 0.0, y: 0.0, width: self.view.frame.size.width, height: 40.0))
if let searchBar = searchBar
{
searchBar.backgroundColor = UIColor.red
self.view.addSubview(searchBar)
}
}
然后你的两个功能上下
func down(sender: UIGestureRecognizer) {
print("down")
//show bar
UIView.animate(withDuration: 1.0, animations: { () -> Void in
self.searchBar!.frame = CGRect(x: 0.0, y: 64.0, width: self.view.frame.width, height: 40.0)
}, completion: { (Bool) -> Void in
})
}
func up(sender: UIGestureRecognizer) {
print("up")
UIView.animate(withDuration: 1.0, animations: { () -> Void in
self.searchBar!.frame = CGRect(x: 0.0, y: 0.0, width: self.view.frame.width, height: 40.0)
}, completion: { (Bool) -> Void in
})
}
您可以添加Bool isShowing
以避免不必要的动画。然后,实施搜索栏代理textDidChange
以在用户键入时更改搜索结果。
func searchBar(_ searchBar: UISearchBar,textDidChange searchText: String)`
您现在需要做的只是在UISearchController
。
注意强>
使用向上/向下滑动操作可能会干扰UIScreachController