2010-09-07 23 views
12

Sono bloccato qui. So come copiare e incollare sul lato iPhone delle cose, ma come posso copiare il contenuto da un campo di testo negli appunti globali in OSX. Ho cercato sul web ma non ci sono davvero esempi. Quindi lascia che ti spieghi in dettaglio cosa sto cercando di realizzare. Ho un NSTextField denominato helloField e voglio essere in grado di copiare il contenuto di questo helloField sul tavolo di montaggio globale premendo un pulsante. Come può essere fatto e ci sono alcune librerie di cui ho bisogno? Grazie.Come copiare textField negli appunti OSX?

risposta

45

Su iOS

[UIPasteboard generalPasteboard].string = helloField.text; 

su OSX

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

su MacOS 3.x Swift

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

appena capito (su MonoMac per OS X) che il 'clearContents' è necessario, altrimenti il' setString' non riesce e restituisce ' FALSE. –

+0

È necessario omettere le parentesi sulla prima riga nell'implementazione di Swift: lasciare pasteBoard = NSPasteboard.general – Aarhus88

2

codice per copiare una stringa negli Appunti:

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

NSStringPboardType obsoleto. C'è una nota in NSPasteboard.h su pboard tipi:

L'utilizzo di tipi pboard dovrebbe essere sostituito con l'uso di infezioni del tratto urinario. I tipi di pboard saranno deprecati in una versione futura.

anche nel file di intestazione:

APPKIT_EXTERN NSString * const NSPasteboardTypeString NS_AVAILABLE_MAC (10_6); // Sostituisce NSStringPboardType
...
APPKIT_EXTERN NSString * NSStringPboardType; // Usa NSPasteboardTypeString

0

per il cacao in MacOS Swift 3:

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