2014-10-31 4 views
6

unten wischen Ich bin eine Social-Media-App für iOS EntwicklungSuchleiste, wenn sie in schnellen

Meine ViewControllers sind derzeit in einem NavigationController eingebettet. In meinem Newsfeed-Bildschirm muss ich eine Suchleiste anzeigen, wenn der Benutzer nach unten wischt (und diese ausblenden, wenn er nach oben wischt). Wenn der Benutzer etwas eingibt, werden die Suchergebnisse oben auf dem News-Feed-Bildschirm angezeigt.

Ich habe versucht, damit zu basteln, aber ich bin ziemlich neu in iOS und bis jetzt nicht geschafft, dies zu arbeiten.

Jede Hilfe würde dankbar geschätzt werden und bedenken Sie, dass ich erst seit ein paar Wochen iOS programmiert habe, also wäre etwas in der Tiefe hilfreich. Vielen Dank!

Antwort

3

Zuerst müssen Sie UISwipeGestureRecognizer

gehören die setup() Funktion in 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) 
    } 
} 

Dann Ihre beiden Funktionen auf und ab

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 
    }) 
} 

Sie Bool isShowing hinzufügen können, implementieren zu vermeiden unnötige Animationen. Implementieren Sie anschließend den Suchleistendelegaten textDidChange, um die Suchergebnisse zu ändern, wenn der Benutzer eingibt.

func searchBar(_ searchBar: UISearchBar,textDidChange searchText: String)` 

Alles, was Sie jetzt tun müssen, ist in einem UISearchController Ihre Ergebnisse anzuzeigen.

Hinweis Mit Swipe nach oben/unten Bewegung könnte mit dem Scrollen des UIScreachController

stören