Как скопировать textField в буфер обмена OSX? - PullRequest
14 голосов
/ 07 сентября 2010

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

Ответы [ 3 ]

48 голосов
/ 10 августа 2012

На iOS

[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])
2 голосов
/ 03 апреля 2016

Код для копирования строки в буфер обмена:

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

NSStringPboardType устарел.В NSPasteboard.h есть примечание о pboard типах:

Использование типов панелей должно быть заменено использованием UTI.Типы панелей в будущем выпуске будут устаревшими.

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

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

0 голосов
/ 21 января 2018

Для MacOS с какао в Swift 3:

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