2014-09-21 17 views
9

Czy można skopiować tekst/obraz do UIPasteboard w rozszerzeniu klawiatury? Podobne do tego, co robi popkey.co z animowanymi obrazami.Niestandardowa klawiatura iOS8 - Kopiuj i wklej do UIPasteboard

Przetestowałem poniższy kod i wygląda na to, że nie działa.

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

To zawsze pokazuje ten komunikat o błędzie:

UIPasteboard - nie udało się uruchomić pasteboardd. Upewnić się, że zainstalowane w UIKit.framework/obsługa

Wiesz o jakikolwiek inny sposób wykorzystania skopiować & pastę z rozszerzeniem klawiatury?

Odpowiedz

20

Udało mi się to zrobić, gdy dałem własną klawiaturę "Pełny dostęp" w menu Ustawienia-> Ogólne-> Klawiatura. Musisz podać "RequestsOpenAccess" = YES w pliku Info.plist. I musisz włączyć opcję "Pełny dostęp" w aplikacji Ustawienia.

Wygląda na to, że Apple w inny sposób ogranicza dostęp do ogólnej konsoli UIPasteboard.

+0

Dziękuję za poradę. Próbowałem dodać go do pliku Info.plist, ale wciąż nie ma szczęścia. Nie dostaję już błędu (nawet z oryginalnym plikiem z jakiegoś powodu), ale 'UIPasteboard.generalPasteboard()' zwraca zero. –

+8

Masz rację, to był problem "pełnego dostępu". Dodałem go do katalogu głównego pliku Info.plist, ale musi to być zrobione w ** Info.plist -> NSExtension -> NSExtensionAttributes -> RequestsOpenAccess -> YES ** Dziękujemy za pomoc! –

+0

To musi być ustawione w info.plist z rozszerzeniem klawiatury, a nie z Twojej aplikacji zawierającej – Jasper

1

Przede wszystkim musisz uzyskać pełny dostęp do swojej niestandardowej klawiatury w celu użycia obrazów/gifów ... w ustawieniach iPhone'a -> Ogólne -> Klawiatury -> Klawiatury -> Dodaj nową klawiaturę ... (Wybierz klawiatura pod KLAWIATURAMI ZEWNĘTRZNYCH) -> kliknij na klawiaturę i przełącz Pozwól na pełny dostęp

Aby to zrobić, musisz przejść do, aby ustawić RequestsOpenAccess = YES w pliku info.plist znajdującym się w folderze rozszerzenia klawiatury.

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

Poniższa metoda dostanie tag tag przycisk sprawdzić w instrukcji switch i ustawić właściwy obraz według przycisk znacznika do papierowy. następnie

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") 
    }} 

Użytkownik może wkleić obraz do dowolnej obsługiwanej aplikacji ...

nadzieję, że to pomaga!

+0

Czy można wkleić obraz automatycznie? – Veilkrand

+0

@ Veilkrand nie jest możliwe automatyczne wklejenie obrazu. Musisz skopiować obraz do UiPasteboard i wkleić go do widoku wejściowego. – Ramakrishna

Powiązane problemy