Я хочу, чтобы NSPasteboard.generalPasteboard() был временно переключен на пользовательский, созданный моим приложением с помощью NSPasteboard.pasteboardWithUniqueName()

Так что, когда пользователь нажимает Cmd + C / Cmd + V при переключении монтажного стола, монтажный стол моего приложения используется вместо общего монтажного стола.

Есть ли способ сделать это?

0
Kaatt 28 Фев 2015 в 17:09

2 ответа

Лучший ответ

Нет, этого не сделать.

Если вы хотите изменить поведение только в собственном приложении, вы можете добавить категорию / расширение в NSPasteboard, чтобы добавить метод, который возвращает либо общий монтажный стол, либо личный монтажный стол вашего приложения. Это, по крайней мере, изолирует логику в одном месте. В любом другом месте кода вы должны использовать собственный метод вместо +generalPasteboard.

Если вы хотите изменить поведение других приложений, то вам не повезло. Какую цель более высокого уровня вы пытаетесь достичь? Почему вы хотите изменить, какие приложения монтажного стола используют? Если вы это объясните, возможно, есть другой способ достичь этой цели.

1
Ken Thomases 28 Фев 2015 в 19:17

Да, это возможно. Вам нужно создать свой собственный синглтон, например. customPasteboard с наследованием от UIPasteboard, затем с помощью swizzling generalPasteboard вы можете вернуть свой собственный синглтон. Имейте в виду, что при запуске из iOS для свойства «persist» установлено значение NO для именованного монтажного стола, что отличается от обычного монтажного стола, оно сохраняется в памяти за сеанс.

0
Davit Petrosyan 15 Окт 2019 в 11:13