2010-09-07 50 views
12

我被困在這裏。我知道如何複製和粘貼iPhone的東西,但我怎樣才能從textField的內容複製到OSX的全局剪貼板。我一直在網上搜索,但實際上並沒有例子。所以讓我詳細解釋我想要完成的事情。我有一個名爲helloField的NSTextField,我希望能夠通過按下按鈕將這個helloField的內容複製到全局粘貼板。如何做到這一點,是否有我需要的某些圖書館?謝謝。如何將textField複製到OSX剪貼板?

回答

45

在iOS

[UIPasteboard generalPasteboard].string = helloField.text; 

在OSX

[[NSPasteboard generalPasteboard] clearContents]; 
[[NSPasteboard generalPasteboard] setString:helloField.stringValue forType:NSStringPboardType]; 

在MacOS和斯威夫特3.X

let pasteBoard = NSPasteboard.general() 
pasteBoard.clearContents() 
pasteBoard.writeObjects([text as NSString]) 
+1

只是想出了(上爲的MonoMac OS X),該clearContents'要求',否則'setString'失敗並返回' FALSE'。 – 2012-11-04 18:06:33

+0

必須在Swift實現的第一行省略括號:let pasteBoard = NSPasteboard.general – Aarhus88 2017-10-11 12:52:44

2

代碼將一個字符串複製到剪貼板:

[[NSPasteboard generalPasteboard] clearContents]; 
[[NSPasteboard generalPasteboard] setString:copiedString forType:NSPasteboardTypeString]; 

NSStringPboardType已棄用。有NSPasteboard.h關於pboard類型的注意事項:

使用板類型應替換使用UTIs。未來版本中將不推薦使用Pboard類型。

另外,在頭文件:

APPKIT_EXTERN的NSString * const的NSPasteboardTypeString NS_AVAILABLE_MAC(10_6); //替換NSStringPboardType
...
APPKIT_EXTERN NSString * NSStringPboardType; //使用NSPasteboardTypeString

0

可可Mac系統中的斯威夫特3:

let pasteBoard = NSPasteboard.general() 
pasteBoard.clearContents() 
pasteBoard.setString("something", forType: NSPasteboardTypeString)