Domanda

Vorrei catturare una stringa di essere incollato in un controllo e applicare un po 'di formattazione personalizzata alla stringa prima di essere incollato.

Come è possibile questo?

Grazie!

È stato utile?

Soluzione

Override paste: nella visualizzazione / controllo (pasta: fa parte del UIResponderStandardEditActions protocollo informale). Al più semplice, devi fare questo:

- (void)paste:(id)sender
{
   UIPasteboard* pasteboard = [UIPasteboard generalPasteboard];
   NSString* rawString = pasteboard.string;
   NSString* formattedString =  // do something fun with rawString here
   pasteboard.string = formattedString;
   [super paste:sender];
}

Questo è supponendo che non è necessario fare qualcosa di terribilmente fantasia con la stringa (come l'inserimento faccine animate o qualcosa del genere), nel qual caso non si dovrebbe chiamare super ma fare l'inserimento da soli (se si sta facendo questo su un UITextView è possibile utilizzare la proprietà selectedRange di fare l'inserimento corretto).

EDIT: Per ottenere i dati da un NSPasteBoard si dovrebbe usare –stringForType: o uno dei molti altri metodi di accesso ai dati . Potrebbe essere necessario validare la stringa / dati per assicurarsi che sia qualcosa che può essere incollato.

Probabilmente non dovrebbe chiamare super ma usare

[self insertText:formattedString];

se stai facendo questo su un NSTextView. Se si sta lavorando con un'altra classe si deve scoprire che cosa è appropriato in questo contesto.

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