2017-09-18 3 views
4

Ich habe eine App, die im Laden lebt. Ich versuche, es für die iOS11-Version fertig zu machen, bin aber auf ein lästiges Problem gestoßen.iOS11 UIBarButtonItem funktioniert nicht

Keiner der UIBarButtonItem s in der App richtig funktionieren. Die leftBarButtonItems können angeklickt werden, der Klickbereich befindet sich jedoch etwas rechts neben dem Objekt. Die rightBarButtonItems funktionieren überhaupt nicht! Ich habe die Elemente sowohl über das Storyboard als auch über Code hinzugefügt, aber keiner von ihnen scheint zu funktionieren. Bitte helfen Sie!

Hier ist ein Beispiel: -

navigationItem.rightBarButtonItem = UIBarButtonItem(title: NSLocalizedString("Save", comment: "save button title"), style: UIBarButtonItemStyle.plain, target: self, action: #selector(VC.rightBarButtonClicked(_:))) 
+0

Können Sie Safe Area überprüfen? Refer - https://developer.apple.com/documentation/uikit/uiview/positioning_content_relative_to_the_safe_area – user1046037

Antwort

6

hatte das gleiche Problem. Es kam zu einer Erweiterung auf UIButton in einer Datei namens "UIButton + MinimumTouchArea.swift" in unserem Projekt, die UIButton.hitTest überschreibt und UIBarButtonItem in iOS 11 bricht. Es dauerte uns den ganzen Tag, um herauszufinden!

+0

danke! Stellt einen früheren Entwickler her, der den hitTest-Bereich der Tasten außer Kraft gesetzt hat und das hat es vermasselt! –

1

iOS11 UIBarButtonItem action not get called

lief in die gleiche Lösung für mich war, mit Xcode 8.3 statt (Geräte mit ios11 läuft die App Build von 8,3 arbeitete gut)

zu bauen

Use Xcode 8 with iOS 11 können Sie diese Abhilfe zu debuggen ios11 Geräte auf Xcode verwenden 8.3

+1

Danke für die Antwort. Dies ist, was ich jetzt gerade mache, aber es sollte einen Weg geben, dieses Problem mit Xcode9 zu lösen, da ich eine Beispiel-App gemacht und ein anderes Open-Source-Projekt heruntergeladen habe, die beide gut funktionieren –

0

Ja, es Fehler in iOS 11 so können Sie einen anderen Weg dafür verwenden.

Verwenden interactivePopGestureRecognizer wie

self.navigationController?.interactivePopGestureRecognizer?.delegate = self as! UIGestureRecognizerDelegate 

und implementieren Delegatmethode wie

func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool { 
     guard gestureRecognizer == interactivePopGestureRecognizer else { 
      return true // default value 
     } 

     // Write you code here. 
    } 
Verwandte Themen