2010-02-23 114 views

回答

6

在您的視圖/控件中覆蓋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:several other data access methods之一。您可能必須驗證字符串/數據以確保它可以被粘貼。

你可能不應該叫super但使用

[self insertText:formattedString]; 

,如果你這樣做是在NSTextView。如果你正在與另一個班級合作,你必須找出適合的範圍。

+0

完美,謝謝! – christo16 2010-02-23 17:58:11

+0

我想我用iPhone標記這篇文章,但我正在尋找更多的實施NSPasteBoard,特別是[超級粘貼:發件人]部分。 – christo16 2010-02-23 18:38:40

+0

@haroldthehungry查看修改。 – Felixyz 2010-02-23 19:31:19