2015-09-04 21 views
7

Voglio creare una vista semplice sulla tastiera, quando gli utenti toccano il pulsante "Allega" in inputAccessoryView. Qualcosa di simile a questo:Come visualizzare UIView sulla tastiera in iOS

enter image description here

C'è un modo semplice per farlo? O dovrei creare la mia tastiera personalizzata?

risposta

9

È possibile aggiungere questa nuova sottoview alla finestra dell'applicazione.

func attach(sender : UIButton) 
{ 
    // Calculate and replace the frame according to your keyboard frame 
    var customView = UIView(frame: CGRect(x: 0, y: self.view.frame.size.height-300, width: self.view.frame.size.width, height: 300)) 
    customView.backgroundColor = UIColor.redColor() 
    customView.layer.zPosition = CGFloat(MAXFLOAT) 
    var windowCount = UIApplication.sharedApplication().windows.count 
    UIApplication.sharedApplication().windows[windowCount-1].addSubview(customView); 
} 
+0

Sì, esattamente quello di cui ho bisogno, grazie mille! –

+0

@pavel_s: prego. Felice codifica !!! –

+0

Si potrebbe usare 'sender.window' invece di' UIApplication.sharedApplication(). Windows [...] '? – rintaro

2

Avete trovato qualche metodo efficace per risolvere questo problema? In iOS9, metti il ​​tuo customView in cima alle finestre : UIApplication.sharedApplication(). Windows [windowCount-1] .addSubview (customView); Ma se la tastiera viene chiusa, verranno rimossi i primi Windows, quindi il tuo customView verrà rimosso. In attesa del tuo aiuto! Grazie per l'aiuto!

+0

Per favore vedi la mia risposta, io risolvo questo problema come questo - http://stackoverflow.com/questions/32598490/show-uiview-with-buttons-over-keyboard-like-in-skype-viber-messengers-swift-i –

0

Anche se questo può essere possibile con l'accesso alla finestra più in alto, vorrei evitare facendo questo, in quanto interferisce chiaramente con le linee guida di Apple.

Quello che vorrei fare è chiudere la tastiera e sostituire la sua cornice con una vista con le stesse dimensioni.

È possibile accedere al frame della tastiera dalle notifiche della tastiera elencate here, il loro userInfo contiene una chiave a cui è possibile accedere con UIKeyboardFrameEndUserInfoKey.

1

Swift 4,0

let customView = UIView(frame: CGRect(x: 0, y: self.view.frame.size.height-300, width: self.view.frame.size.width, height: 300)) 
customView.backgroundColor = UIColor.red 
customView.layer.zPosition = CGFloat(MAXFLOAT) 
let windowCount = UIApplication.shared.windows.count 
UIApplication.shared.windows[windowCount-1].addSubview(customView) 
0

Swift 4 Versione:

let customView = UIView(frame: CGRect(x: 0, y: self.view.frame.size.height - 300, width: self.view.frame.size.width, height: 300)) 
customView.backgroundColor = UIColor.red 
customView.layer.zPosition = CGFloat(Float.greatestFiniteMagnitude) 
UIApplication.shared.windows.last?.addSubview(customView) 

Il trucco è quello di aggiungere il customView come una visualizzazione secondaria superiore per l'UIWindow che contiene la tastiera - e succede essere l'ultima finestra in UIApplication.shared.windows.

0

È possibile aggiungere definitivamente la vista alla finestra dell'applicazione e aggiungere un'altra finestra completamente. È possibile impostare la sua cornice e il livello. Il livello potrebbe essere UIWindowLevelAlert.

Problemi correlati