Я хочу, чтобы NSPasteboard.generalPasteboard()
был временно переключен на пользовательский, созданный моим приложением с помощью NSPasteboard.pasteboardWithUniqueName()
Так что, когда пользователь нажимает Cmd + C / Cmd + V при переключении монтажного стола, монтажный стол моего приложения используется вместо общего монтажного стола.
Есть ли способ сделать это?
2 ответа
Нет, этого не сделать.
Если вы хотите изменить поведение только в собственном приложении, вы можете добавить категорию / расширение в NSPasteboard
, чтобы добавить метод, который возвращает либо общий монтажный стол, либо личный монтажный стол вашего приложения. Это, по крайней мере, изолирует логику в одном месте. В любом другом месте кода вы должны использовать собственный метод вместо +generalPasteboard
.
Если вы хотите изменить поведение других приложений, то вам не повезло. Какую цель более высокого уровня вы пытаетесь достичь? Почему вы хотите изменить, какие приложения монтажного стола используют? Если вы это объясните, возможно, есть другой способ достичь этой цели.
Да, это возможно. Вам нужно создать свой собственный синглтон, например. customPasteboard с наследованием от UIPasteboard, затем с помощью swizzling generalPasteboard вы можете вернуть свой собственный синглтон. Имейте в виду, что при запуске из iOS для свойства «persist» установлено значение NO для именованного монтажного стола, что отличается от обычного монтажного стола, оно сохраняется в памяти за сеанс.
Похожие вопросы
Связанные вопросы
Новые вопросы
objective-c
Этот тег следует использовать только для вопросов, касающихся функций Objective-C или зависящих от кода на языке. Теги [cocoa] и [cocoa-touch] следует использовать, чтобы узнать о фреймворках или классах Apple. Используйте связанные теги [ios], [macos], [apple-watch] и [tvos] для проблем, характерных для этих платформ.