Domanda

Sto provando a mettere un po 'di testo semplice in iPhone Pasteboard. Il seguente codice non sembra funzionare:

UIPasteboard *pboard = [UIPasteboard generalPasteboard];
NSString *value = @"test";
[pboard setValue: value forPasteboardType: @"public.plain-text"];

Suppongo che il problema sia nell'argomento tipo PasteBoard. Passando @"public.plain-text" non succede nulla. Passando kUTTypePlainText il compilatore si lamenta del tipo di puntatore incompatibile, ma non si arresta in modo anomalo e non succede nulla. L'uso di MobileCoreServices sembra richiedere anche il collegamento con <=>, che non è menzionato nei documenti.

È stato utile?

Soluzione 2

Risposta ai commenti e alla mia domanda:

  • L'impostazione della proprietà pasteboard string funziona.
  • L'uso di setValue:forPasteboardType: funziona anche se uso kUTTypeUTF8PlainText anziché kUTTypePlainText per il tipo di pannello di montaggio.

Non avevo notato la proprietà della stringa perché sono andato direttamente alla " Ottenere e impostare elementi Single Pasteboard " attività.

Il modo in cui stavo testando è stato facendo clic in un campo di testo e vedere se apparirà il pop-up incolla.

Non sono ancora sicuro di dove nei documenti siano spiegati i tipi UTT per iPhone, incluso dove trovarli (Framework, #include file), sembra che la " Panoramica degli identificatori di tipo uniforme quot; doc è ancora orientato verso Mac OS. Dato che le costanti mi hanno dato un avviso di tipo non corrispondente ho pensato che stavo facendo qualcosa di sbagliato, ecco perché ho provato a usare un NSString letterale.

Altri suggerimenti

Usa questa intestazione per ottenere il valore per kUTTypeUTF8PlainText;

#import <MobileCoreServices/UTCoreTypes.h>

Devi disporre del framework MobileCoreServices disponibile.

Ecco i miei esperimenti con incollare testo sul pannello di montaggio. Sto usando un pulsante per aggiungere il testo programmaticamente.

#import <MobileCoreServices/MobileCoreServices.h>

- (IBAction)setPasteboardText:(id)sender
{
    UIPasteboard *pb = [UIPasteboard generalPasteboard];
    NSString *text = @"東京京都大阪";

    // Works, but generates an incompatible pointer warning
    [pb setValue:text forPasteboardType:kUTTypeText];

    // Puts generic item (not text type), can't be pasted into a text field
    [pb setValue:text forPasteboardType:(NSString *)kUTTypeItem];

    // Works, even with non-ASCII text
    // I would say this is the best way to do it with unknown text
    [pb setValue:text forPasteboardType:(NSString *)kUTTypeText];

    // Works without warning
    // This would be my preferred method with UTF-8 text
    [pb setValue:text forPasteboardType:(NSString *)kUTTypeUTF8PlainText];

    // Works without warning, even with Japanese characters
    [pb setValue:text forPasteboardType:@"public.plain-text"];

    // Works without warning, even with Japanese characters
    [pb setValue:text forPasteboardType:@"public.text"];

    // Check contents and content type of pasteboard
    NSLog(@"%@", [pb items]);
}

Ho controllato il contenuto in un campo di testo per verificarlo e ogni volta ho cambiato il contenuto del testo per assicurarmi che non stesse semplicemente riutilizzando il precedente incolla.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top