2017-09-22 5 views
0
gebrochen

Ich habe das Set folgendes für meine UIToolbar/Zubehör Ansicht über einen View-ControlleriOS 11 inputAccessoryView

@IBOutlet var inputFieldView: UIToolbar! 
override var canBecomeFirstResponder: Bool{ 
    return true 
} 

override var inputAccessoryView: UIView?{ 
    return self.inputFieldView 
} 

dann in meinem viewDidLoad ich habe:

let seperator = UIView(frame: CGRect(x:0 , y: 0, width: ScreenSize.width(), height: 1)) 
    seperator.backgroundColor = UIColor.lightBackground 
    self.inputFieldView.addSubview(seperator) 
    self.inputFieldView.isTranslucent = false 
    self.inputFieldView.setShadowImage(UIImage(), forToolbarPosition: .any) 
    self.inputFieldView.setBackgroundImage(UIImage(), forToolbarPosition: .any, barMetrics: .default) 
    self.inputFieldView.removeFromSuperview() 

Diese für ios Versionen super funktioniert 10 und 9. Es ist eine Textansicht mit einem "Senden" -Button. Es befindet sich am unteren Bildschirmrand und wird, wenn es gedrückt wird, zum Ersthelfer, so dass die Tastatur hochkommt und sich korrekt positioniert.

Mit ios 11 kann ich nicht einmal darauf klicken, wenn es unten ist, also kann ich überhaupt nicht tippen.

Antwort

0

Gelöst es. Es sieht aus wie UIToolbar ist einfach nicht richtig funktionieren in iOS 11.

es zu einem UIView geändert und entfernt

self.inputFieldView.isTranslucent = false 
self.inputFieldView.setShadowImage(UIImage(), forToolbarPosition: .any) 
self.inputFieldView.setBackgroundImage(UIImage(), forToolbarPosition: .any, barMetrics: .default) 

habe es funktioniert (und änderte es zu einem UIView aus UIToolbar im xib als auch.)

+0

Können Sie bitte Ihren vollständigen Code zeigen. Ich kämpfe darum, dass es überhaupt auftaucht. – arvidurs

+0

Versuchen Sie, mein Problem neu zu erstellen oder ein Problem zu lösen? @arvidurs – daredevil1234

4

Dies ist ein bekannter Fehler unter iOS 11. UIToolbar-Teilansichten erhalten keine Berührungsereignisse, da einige interne Ansichten der Symbolleiste nicht ordnungsgemäß eingerichtet sind.

Die aktuelle Problemumgehung besteht darin, toolBar.layoutIfNeeded() direkt vor dem Hinzufügen von Teilansichten aufzurufen.

In Ihrem Fall:

inputFieldView.layoutIfNeeded() 

Hoffentlich wird dies auf der nächsten großen Version gefixt.