Vincent Tourraine
Blog

Partager/copier une URL avec Catalyst

#dev #iOS #macOS

Quand on partage une URL avec UIActivityViewController, iOS propose de la copier dans le presse-papiers. Rien de plus normal. Mais si on compile ce même code pour macOS avec Catalyst, cette option n’est pas proposée.

Partage d’une URL dans PlayGuide sur iOS et macOS
Partage d’une URL dans PlayGuide sur iOS et macOS

Heureusement, il existe une solution pour proposer la copie d’une information (URL ou autre) sur macOS : il suffit d’implémenter la fonction copy(_:), en passant une valeur à UIPasteboard.general. Par exemple :

override func copy(_ sender: Any?) {
  UIPasteboard.general.string = playground?.shareUrl
}

Vous pouvez placer ce code dans un UIViewController si cela concerne tout l’écran, ou bien dans une UIView pour copier un élément plus spécifique. En fait, l’application analyse la responder chain, et utilise le premier objet qui implémente cette fonction.

C’est d’autant plus intéressant que macOS gère tout le reste automatiquement. Le menu « Édition » activera l’élément « Copier » dynamiquement et le raccourci clavier ⌘C fonctionnera normalement. En bonus, si vous utilisez cette application sur iPad avec un clavier externe, l’option sera également proposée.

Une façon simple et rapide pour améliorer vos applications avec Catalyst.