2015-05-27 6 views
15

Ich habe UICollectionView. Wenn ich auf die Suchschaltfläche in UINavigationBar klicke, füge ich als UINavigationItem die searchbar als titleview hinzu. Für iPhone funktioniert es richtig. Für iPad wird die cancel Schaltfläche nicht angezeigt. Die Suchleiste alleine nimmt die gesamte Breite ein.Abbrechen-Schaltfläche wird nicht in UISearchBar

enter image description here

Kann mir jemand auf diese helfen ?. Danke im Voraus.

+0

Sind Sie verschiedene Bildabfolgen oder xib für iPhone und iPad mit? –

+0

Nein. Ich verwende keine Storyboards oder Xib. –

+0

Versuchen Sie, 'searchBar.showsCancelButton = YES;' –

Antwort

17

iOS7 zeigt nicht die Taste abbrechen, wenn ein Navigations hinzugefügt bar.You searchbar in einer anderen Ansicht so sagen kann.

+0

Gute Auswahl von: http://Stackoverflow.com/questions/18986407/ios7-when-uisearchbar-added-in-uinavigationbar-not-showing-cancel-- Knopf –

2

Versuchen Sie es. Fügen Sie ein Häkchen für die Schaltfläche "Abbrechen" hinzu.

enter image description here

+0

das OP erwähnt, dass es funktioniert in iPhone aber nicht iPad – Gerald

6

Ich hatte das gleiche Problem, auf dem iPhone wurde die Suche Abbrechen gut gezeigt, aber auf dem iPad hat es nicht.

Die Umgehungsmöglichkeit des UISearchBar in einem anderen UIView funktionierte nicht gut für mich, da es unterschiedliche Aussehen und falsche Breite bei der Drehung hatte.

Meine Lösung ist eine einfache - verwenden Sie die Suche OHNE Abbrechen, und fügen Sie abbrechen als UIBarButtonItem.

+0

Das scheint mir die richtige Antwort zu sein. Der Abbrechen-Button wird auf dem iPad nicht unterstützt, also füge ihn einfach manuell als 'UIBarButtonItem' hinzu. –

0

Swift-Version: -

habe ich versucht, die @Nikita Khandelwal Methode, aber noch ist es nicht für ipad Ansicht passen. Hier ist der SWIFT-Code, der als korrigierte Antwort gegeben wurde: -

let searchBar: UISearchBar = UISearchBar() 
searchBar.showCancelButton = true 
searchBar.placeholder = "Search Your Job Title" 
searchBar.fitToSize() 
searchBar.delegate = self //do not need if you delegate searchBar 
let viewForSearchBar: UIView = UIView(frame: searchBar.bounds) 
viewForSearchBar.addSubview(searchBar) 
self.navigationItem.titleView = viewForSearchBar 

********* Aber es ist eine andere Art und Weise Knopf richtig einzustellen abzubrechen und fit für die Ansicht: -

  1. Set Suchleiste wie in der Navigationsleiste Titelansicht: -

    let searchBar: UISearchBar = UISearchBar() 
    searchBar.showCancelButton = true 
    searchBar.placeholder = "Search Your Job Title" 
    searchBar.delegate = self //do not need if you delegate searchBar 
    self.navigationItem.titleView = searchBar 
    
  2. Drag and Bar-Taste auf die rechte Seite der view-Controllers & Namen fallen, wie es auf Abbrechen.

  3. verbinden dann diese Taste, um diese Funktion: -

    @IBAction func iPadCancelButton(sender: AnyObject) { 
         UIApplication.sharedApplication().sendAction("resignFirstResponder", to:nil, from:nil, forEvent:nil) 
         self.dismissViewControllerAnimated(true, completion: nil) 
    } 
    
0
Added rightBarButtonItem with selector will work fine for me. And adding searchBar inside view before setting to navigation title view was not showing properly. 
Code:- 
self.navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Cancel", style: UIBarButtonItemStyle.plain, target: self, action: #selector(self.dismissView)) 
func dismissView() { 
     if self.controller?.navigationController?.popViewController(animated: true) == nil { 
      self.controller?.dismiss(animated: true, completion: nil) 
     } 
    }