Je voudrais capturer une chaîne collée dans un contrôle et appliquer une mise en forme personnalisée à la chaîne avant de la coller.Substitution de pâte: pour formater le texte
Comment est-ce possible?
Merci!
Je voudrais capturer une chaîne collée dans un contrôle et appliquer une mise en forme personnalisée à la chaîne avant de la coller.Substitution de pâte: pour formater le texte
Comment est-ce possible?
Merci!
Remplacer paste:
dans votre vue/contrôle (coller: fait partie du protocole informel UIResponderStandardEditActions
). Au plus simple, vous feriez ceci:
- (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];
}
Ceci suppose que vous n'avez pas besoin de faire quelque chose de terriblement fantaisie avec la chaîne (comme l'insertion de smileys animés ou quelque chose), auquel cas vous ne devriez pas appeler super
mais faites vous-même l'insertion (si vous le faites sur un UITextView
vous pouvez utiliser la propriété selectedRange
pour effectuer l'insertion correctement).
EDIT: Pour obtenir les données d'un NSPasteBoard
, vous devez utiliser –stringForType:
ou l'un des several other data access methods. Vous devrez peut-être valider la chaîne/données pour vous assurer que c'est quelque chose qui peut être collé.
Vous ne devriez probablement pas appeler super
mais utiliser
[self insertText:formattedString];
si vous faites cela sur un NSTextView. Si vous travaillez avec un autre cours, vous devez trouver ce qui est approprié dans ce contexte.
Parfait, merci! – christo16
Je suppose que j'ai tagué ce post avec iPhone, mais je cherche plus d'implémentation pour NSPasteBoard, en particulier la partie [super paste: sender]. – christo16
@haroldthehungry Voir la modification. – Felixyz