2010-09-07 15 views
12

Je suis coincé ici. Je sais copier et coller sur le côté iPhone des choses mais comment puis-je copier le contenu d'un textField dans le presse-papiers global dans OSX. J'ai fait des recherches sur le Web mais il n'y a vraiment aucun exemple. Alors laissez-moi vous expliquer en détail ce que j'essaie d'accomplir. J'ai un NSTextField nommé helloField et je veux être capable de copier le contenu de ce helloField au tableau de bord global en appuyant sur un bouton. Comment cela peut-il être fait et existe-t-il certaines bibliothèques dont j'ai besoin? Merci.Comment copier textField dans le Presse-papiers OSX?

Répondre

45

Sur iOS

[UIPasteboard generalPasteboard].string = helloField.text; 

Sur Mac OS X

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

sur macOS et 3.x Swift

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

Tout a compris (sur Monomac pour OS X) que le 'clearContents' est nécessaire, sinon le' setString' échoue et renvoie ' FAUX –

+0

Vous devez omettre des parenthèses sur la première ligne de l'implémentation de Swift: laissez pasteBoard = NSPasteboard.general – Aarhus88

2

code pour copier une chaîne dans le presse-papiers:

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

NSStringPboardType est déprécié. Il y a une note dans NSPasteboard.h à propos pboard types:

Utilisation des types de pBoard doit être remplacé par l'utilisation d'infections urinaires. Les types Pboard seront déconseillés dans une prochaine version.

également dans le fichier d'en-tête:

APPKIT_EXTERN NSString * const NSPasteboardTypeString NS_AVAILABLE_MAC (10_6); // Remplace NSStringPboardType
...
APPKIT_EXTERN NSString * NSStringPboardType; // Utilisation NSPasteboardTypeString

0

pour le cacao macOS à Swift 3:

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