我正在为iOS开发一个社交媒体应用程序
我的ViewControllers目前嵌入在NavigationController中.
在我的新闻提要屏幕上,我需要在用户向下滑动时显示搜索栏(并在他向上滑动时隐藏它),其中如果用户输入内容,搜索结果将显示在新闻提要屏幕的顶部.
我试图修补这个,但我对iOS很新,到目前为止还没有设法让它工作.
任何帮助都会受到赞赏,请记住,我只对iOS进行了几周的编程,因此有些深入有用.
谢谢 !
解决方法
首先,您需要实现UISwipeGestureRecognizer
在viewDidAppear中包含setup()函数
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,completion: { (Bool) -> Void in }) }
您可以添加Bool isShowing以避免不必要的动画.然后,实现搜索栏委托textDidChange以在用户键入时更改搜索结果.
func searchBar(_ searchBar: UISearchBar,textDidChange searchText: String)`
您现在需要做的就是在UISearchController中显示结果.
注意使用向上/向下滑动可能会干扰UIScreachController的滚动
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。