2017-09-22 8 views
0

Je donne les résultats suivants mis en place pour mon UIToolbar/Accessoires Vue sur un contrôleur de vueiOS 11 inputAccessoryView cassé

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

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

puis à l'intérieur de mon viewDidLoad je:

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

Cela a très bien fonctionné pour ios versions 10 et 9. Il s'agit d'une vue de texte avec un bouton "Envoyer". Il se trouve au bas de l'écran et lorsqu'il est pressé, devient le premier répondeur permettant au clavier de se lever et il se positionne correctement. Avec ios 11 je ne peux même pas cliquer dessus quand il est en bas, donc je ne peux pas taper du tout.

Répondre

0

Résolu. Il ressemble juste de UIToolbar ne fonctionnent pas correctement dans iOS 11.

Changé à un UIView et retiré

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

obtenu ce travail (et changé à un UIView de UIToolbar dans le xib aussi bien.)

+0

Pouvez-vous montrer votre code complet s'il vous plaît. J'ai du mal à le faire apparaître. – arvidurs

+0

Etes-vous en train d'essayer de recréer mon problème ou de résoudre un problème qui vous est propre? @arvidurs – daredevil1234

4

Il s'agit d'un bogue connu sur iOS 11. Les sous-vues UIToolbar n'obtiennent pas les événements tactiles car certaines vues internes de la barre d'outils ne sont pas configurées correctement.

La solution de contournement actuelle consiste à appeler toolBar.layoutIfNeeded() avant d'ajouter des sous-vues.

Dans votre cas:

inputFieldView.layoutIfNeeded() 

Espérons que cela se fixe sur la prochaine version majeure.