Переопределить вставку: отформатировать текст - PullRequest
1 голос
/ 23 февраля 2010

Я хотел бы захватить строку, вставляемую в элемент управления, и применить к ней произвольное форматирование перед вставкой.

Как это возможно?

Спасибо!

1 Ответ

6 голосов
/ 23 февраля 2010

Переопределить 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. Если вы работаете с другим классом, вы должны выяснить, что подходит в этом контексте.

...