2014-10-31 3 views
6

Я разрабатываю приложение социальных медиа для IOSпанель поиска, когда ударяя вниз в быстрой

Мои ViewControllers в настоящее время встроены в NavigationController. На экране моей ленты новостей мне нужно отобразить панель поиска, когда пользователь отскакивает (и скрывает его, когда он перебирает), в котором, если пользователь вводит что-то, результаты поиска будут отображаться поверх экрана ленты новостей.

Я попытался возиться с этим, но я довольно новичок в iOS и до сих пор не смог заставить это работать.

Любая помощь будет оценена и учтите, что я только программировал iOS в течение нескольких недель, поэтому некоторые из них были бы полезными. Спасибо!

ответ

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

Смежные вопросы