J'essaie d'utiliser la fonction de sélection et de copie de IKImageView. Si tout ce que vous voulez faire est d'avoir une application avec une image, sélectionnez une partie et copiez-la dans le presse-papiers, c'est facile. Vous définissez le choix du menu de copie sur la copie du premier répondant: méthode (id) et tout fonctionne magiquement.Un autre IKImageView Question: copier une région
Cependant, si vous voulez quelque chose de plus compliqué, comme vous voulez copier dans le cadre d'une autre opération, je n'arrive pas à trouver la méthode pour le faire.
IKImageView ne semble pas avoir de méthode de copie, il ne semble pas avoir une méthode qui vous dira même le rectangle sélectionné!
Je suis passé par le livre de Hillegass, donc je comprends comment fonctionne le presse-papiers, tout simplement pas comment la partie de l'image de la vue ...
Maintenant, je commence à penser que J'ai fait une erreur en basant mon projet sur IKImageView, mais c'est sur quoi Preview est construit (ou j'ai lu), donc j'ai pensé que ça devait être stable ... et de toute façon, maintenant c'est trop tard, je suis trop en profondeur pour recommencer ...
Donc, en plus de ne pas utiliser IKImageView, des suggestions sur la façon de copier manuellement la région sélectionnée dans le presse-papiers?
EDIT En fait, je l'ai trouvé la copie (id) méthode, mais quand je l'appelle, je reçois
<Error>: CGBitmapContextCreate: unsupported parameter combination: 8 integer bits/component; 16 bits/pixel; 1-component color space; kCGImageAlphaPremultipliedLast; 2624 bytes/row.
Ce qui, évidemment, ne se produit pas lorsque je fais une copie normale par la de première répondeur ... Je comprends le message d'erreur, mais je ne suis pas sûr d'où il tire ces paramètres ...
Y at-il un moyen de suivre cela et de voir comment cela se passe? Un débogueur ne sera pas utile pour des raisons évidentes, ainsi que le fait que je fais cela dans Mozilla, si un débogueur est pas une option quand même ...
EDIT 2 Il me semble que la copy: (id) méthode que je trouve peut-être copier la vue plutôt que de copier un morceau de l'image dans le presse-papiers, ce qui est ce dont j'ai besoin. La raison pour laquelle je pensais que c'était la copie du presse-papiers est que dans un autre projet, où je copie depuis IKImageView dans le presse-papiers directement à partir du menu d'édition, il envoie juste une copie: (id) au firstResponder, mais Je ne suis pas vraiment sûr de ce que l'firstresponder fait avec elle ...
EDIT 3 il semble que l'erreur CGBitmapContextCreate vient [imageView image]
qui, assez curieusement, IS une méthode documentée.
Il est possible que cela se produise parce que je mets l'image dedans avec une méthode setImage: (id), en passant un NSImage * ... Y at-il une autre façon plus intelligente d'obtenir un NSImage dans un IKImageView?
Vous pouvez certainement les plug-ins de débogage dans une application externe tel que Mozilla/Firefox. Créez simplement un exécutable personnalisé dans votre projet Xcode et pointez-le sur l'application que vous souhaitez déboguer. J'ai très bien réussi avec Safari, Dreamweaver, Adobe GoLive et d'autres. –
"Il me vient à l'esprit que la méthode' copy: (id) 'que j'ai trouvée est peut-être en train de copier la vue plutôt que de copier une partie de l'image dans le presse-papiers ..." Non.), qui renvoie une copie de l'objet et ne fonctionne pas sur les vues. 'copy:' (un argument) 'est une action qui indique au récepteur (la vue) de copier sa sélection dans le presse-papiers. –