Переопределить paste:
в вашем представлении / управлении (вставка: является частью UIResponderStandardEditActions
неофициального протокола). Самое простое, вы бы сделали это:
- (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];
}
Это предполагает, что вам не нужно делать что-то ужасно причудливое со строкой (например, вставлять анимированные смайлики или что-то в этом роде), и в этом случае вы не должны вызывать super
, а делать вставку самостоятельно (если вы делаете это на UITextView
вы можете использовать свойство selectedRange
для правильной вставки).
РЕДАКТИРОВАТЬ: Чтобы получить данные из NSPasteBoard
, вы должны использовать –stringForType:
или один из несколько других методов доступа к данным . Возможно, вам придется проверить строку / данные, чтобы убедиться, что это то, что можно вставить.
Вы, вероятно, не должны звонить super
, но использовать
[self insertText:formattedString];
если вы делаете это на NSTextView. Если вы работаете с другим классом, вы должны выяснить, что подходит в этом контексте.