2016-08-08 50 views
1

Dieser CodetvOS: Eine Möglichkeit, UISearchController nicht als Schaltfläche anzuzeigen?

var searchController: UISearchController! 
@IBOutlet weak var collectionView: UICollectionView! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    searchController = UISearchController(searchResultsController: nil) 
    searchController.searchResultsUpdater = self 
    searchController.obscuresBackgroundDuringPresentation = false 
    view.addSubview(searchController.searchBar) 
    getItems() 
} 

produziert diese: Screeshot1

Beachten Sie, dass die SearchBar als Schaltfläche in der oberen linken Ecke stecken erscheint (weil dies ein Tabbed-App ist es unter der Tab-Leiste angezeigt wird, wenn zuerst dargestellt. Die Schaltfläche "Button" gibt den Fokus zum Testen.

Dies ist, wie es aussieht, nach Drücken der Taste: Screenshot2

Das zweite Bild zeigt, wie ich die Dinge sehen möchten, wenn die Suche Tab geöffnet wird, und die Art, wie ich dachte, es war in tvOS aussehen soll.

Wie bekomme ich den searchController wie im zweiten Screenshot erscheinen? Viele tvOS-Apps machen das, also weiß ich, dass es möglich sein muss. Ich habe die Unterlagen sorgfältig gelesen, aber ich muss etwas verpasst haben.

Ein verwandtes Problem ist, dass die Auflistung unten den Fokus nicht von der SearchController nehmen wird. Man muss mit der Remote-Menü-Taste zurückgehen, um die CollectionView zu fokussieren.

Wie kann ich den searchController wie im zweiten Screenshot erscheinen lassen, wenn die Ansicht erscheint?

Wie bekomme ich die CollectionView, um den Fokus von der SearchController zu nehmen, ohne zurück in die Tab-Leiste gehen zu müssen?

+0

hinzufügen 'self.searchController.searchBar.frame = CGRectMake (960- (self.searchController.searchBar.frame.size.width/2), 200, self.searchController.searchBar.frame.size.width, 44.0)' Ruft die Schaltfläche unter der Tableiste ab, aber die resultierende Benutzeroberfläche ist ein Klotz, der die Logik der tvOS-Schnittstelle (meiner Meinung nach) durchbricht. –

Antwort

1

ist ich endlich über diese Passage in der tvOS Entwickler-Bibliothek lief

Alle der iOS Ersthelfer Mechanismen auf tvOS arbeiten. Dies ermöglicht Entwickler eine Benutzeroberfläche anzuzeigen, sichtbar oder ausgeblendet, und dann einen der die Textfelder der erste Responder durch Aufruf der BecomeFirstResponder-Methode darauf. Diese Aktion bewirkt, dass das Textfeld die Benutzeroberfläche der Tastatur aufruft, ohne dass der Benutzer zu einem Textfeld navigieren muss, und klicken Sie darauf.

so, das Hinzufügen

searchController.searchBar.becomeFirstResponder() 

zeigt die Inline-Tastatur, die ich Benutzer mit starten wollte. Allerdings muss man die Menü-Taste auf der Fernbedienung drücken, bevor der Fokus-Engine wieder einsetzt. Die Menüschaltfläche gibt auch die Tastatur frei und searchBar kehrt zu seinem Schaltflächenstatus zurück.

Dies ist eine Antwort auf die erste meiner Fragen. Immer noch ahnungslos von der Sekunde.