2010-09-07 1 views
12

Я застрял здесь. Я знаю, как копировать и вставлять на стороне iPhone вещи, но как я могу скопировать содержимое из текстового поля в глобальный буфер обмена в OSX. Я искал в Интернете, но примеров на самом деле нет. Поэтому позвольте мне подробно объяснить, что я пытаюсь выполнить. У меня есть NSTextField с именем helloField, и я хочу, чтобы иметь возможность скопировать содержимое этого helloField в глобальный картон, нажав кнопку. Как это можно сделать и есть ли определенные библиотеки, в которых я нуждаюсь? Благодарю.Как скопировать textField в буфер обмена OSX?

ответ

45

КСН

[UIPasteboard generalPasteboard].string = helloField.text; 

На OSX

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

На MacOS и Swift 3.x

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

Просто разобрался (на MonoMac для OS X), что 'clearContents' требуется, в противном случае' setString' терпит неудачу и возвращает ' false'. –

+0

Необходимо исключить скобки на первой строке в реализации Swift: let pasteBoard = NSPasteboard.general – Aarhus88

2

кодекса, чтобы скопировать строку в буфер обмена:

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

NSStringPboardType устарел. Там записка в NSPasteboard.h о pboard типов:

Использование типов pboard следует заменить с использованием ИМП. Типы Pboard будут устаревать в будущей версии.

Также в файле заголовка:

APPKIT_EXTERN NSString * сопзЬ NSPasteboardTypeString NS_AVAILABLE_MAC (10_6); // Заменяет NSStringPboardType
...
APPKIT_EXTERN NSString * NSStringPboardType; // Использование NSPasteboardTypeString

0

какао Macos в Swift 3:

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