2014-09-21 13 views
9

È possibile copiare testo/immagine su UIPasteboard in un'estensione della tastiera? Simile a ciò che popkey.co fa con le immagini animate.Tastiera personalizzata iOS8 - Copia e incolla su UIPasteboard

Ho testato il seguente codice e non sembra funzionare.

func copyImage() { 
    UIPasteboard.generalPasteboard().string = "copy test" 
} 

mostra sempre questo messaggio di errore:

UIPasteboard - non è riuscito a lanciare pasteboardd. Assicurarsi che sia installato in UIKit.framework/Supporto

Sai di qualsiasi altro modo per utilizzare copiare & incolla da un'estensione di tastiera?

risposta

20

Sono riuscito a farlo se ho fornito la mia tastiera personalizzata "Accesso completo" nell'app Impostazioni-> Generale-> Tastiera. È necessario includere "RequestsOpenAccess" = SÌ nel file Info.plist. E devi attivare "Accesso completo" nell'app Impostazioni.

Sembra che Apple stia limitando l'accesso al UIPasteboard generale altrimenti.

+0

Grazie per il vostro consiglio. Ho provato ad aggiungerlo al file Info.plist ma ancora senza fortuna. Non ottengo più l'errore (anche con il file originale per qualche motivo) ma 'UIPasteboard.generalPasteboard()' restituisce nil. –

+8

Hai ragione, si trattava di un problema di "accesso completo". L'ho aggiunto a root di Info.plist ma deve essere fatto in ** Info.plist -> NSExtension -> NSExtensionAttributes -> RequestsOpenAccess -> YES ** Grazie per il tuo aiuto! –

+0

Deve essere impostato nel file info.plist dell'estensione della tastiera, non nell'app che contiene – Jasper

1

Prima di tutto è necessario ottenere l'accesso completo alla tastiera personalizzata per utilizzare immagini/gif ... in Impostazioni iPhone -> Generale -> Tastiere -> Tastiere -> Aggiungi nuova tastiera ... (Seleziona il tuo tastiera sotto TASTIERE DI TERZE PARTI) -> fare clic sulla tastiera e attivare Consenti accesso completo

Per fare ciò è necessario andare a per impostare RequestsOpenAccess = YES nel file info.plist situato nella cartella di estensione della tastiera.

Info.plist -> NSExtension -> NSExtensionAttributes -> RequestsOpenAccess -> SI

Il seguente metodo otterrà il tag pulsante di controllare il tag nella dichiarazione switch e impostare l'immagine corretta in base al pulsante tag al cartone.

func btnPressed(sender: AnyObject) { 

    var btn = sender as UIButton 

    switch (btn.tag){ 
    case 5: 
     let imageURL = NSBundle.mainBundle().pathForResource("cat", ofType: "png") 
     let data = NSData(contentsOfURL: NSURL(fileURLWithPath: imageURL!)!); 
     UIPasteboard.generalPasteboard().setData(data!, forPasteboardType: "public.png") 

    case 10: 
     let imageURL = NSBundle.mainBundle().pathForResource("dog", ofType: "png") 
     let data = NSData(contentsOfURL: NSURL(fileURLWithPath: imageURL!)!); 
     UIPasteboard.generalPasteboard().setData(data!, forPasteboardType: "public.png") 
    }} 

utente può quindi incollare l'immagine a qualsiasi applicazione supportata ...

Spero che questo aiuti!

+0

È possibile incollare l'immagine automaticamente? – Veilkrand

+0

@Veilkrand no non è possibile incollare l'immagine automaticamente. Devi copiare l'immagine su UiPasteboard e incollarla nella vista di input. – Ramakrishna

Problemi correlati