Click-Through Disabler

Par défaut, les contrôles de Cocoa acceptent les clics quand leur fenêtre n’est pas au premier plan. C’est ce qu’on appelle le « clic au travers », ou « click-through » en anglais. Cependant, le guide de l’interface humaine de Mac OS X recommande que les contrôles causant des action destructives ou difficiles à annuler soit désactivés quand la fenêtre n’est pas au premier plan, ceci pour éviter les clics accidentels.

Un object MFClickThroughDisabler s’occupe de désactiver ou d’activer un contrôle en fonction de l’état de la fenêtre dans laquelle il est placé. Ceci a pour effet de rendre le contrôle non-cliquable quand la fenêtre n’est pas la active.

Fichier

MFClickThroughDisabler.h
MFClickThroughDisabler.m

Utilisation

Copiés à partir du guide, voici les cas où vous devirez déactiver le clic au travers (traduction libre) :

Ne permettez pas le clic au travers pour les action qui :

Aussi, vous ne devriez pas désactiver le clic au travers pour les actions qui font intervenir un dialogue de confirmation.

Avec un contrôle dans un fichier nib

Avant d’utiliser cette classe, vous devez inclure les fichier parmis les sources de votre programme. Une fois que MFClickThroughDisabler fait partie de votre projet, ouvrez le fichier nib contenant le contrôle que vous désirez désactiver et faites lire le fichier MFClickThroughDisabler.h par Interface Builder pour lui faire ajouter la classe à la hiérarchie. Vous pouvez ensuite instancier un objet de cette classe.

À partir de l’objet MFClickThroughDisable instancié, glissez avec la touche contrôle enfoncé jusqu’au contrôle dont vous voulez désactiver le clic au travers. Du panneau « Connection » de l’inspecteur, connectez sur la prise control. Voilà!

Pour un contrôle créé programatiquement

Si votre contrôle est créé à partir du code, et non pas d’un ficheir nip, vous devrez l’attachez au désactivateur de clic au travers dans le code aussi. C’est très simple, vous n’avez qu’à créer un MFClickThroughDisabler connecté à votre contrôle et vous assurer qu’il est retenu, soit par le contrôleur de la fenêtre soit ailleurs.

Consultez le fichier d’entête pour plus de détails.

Problème connu

Si vous voulez désactiver un contrôle qui est attaché à un MFClickThroughDisabler, vous devriez d’abord détacher le désactivateur en utilisant [disabler setControl:nil] pour prévenir l’activation du contrôle quand la fenêtre reviendra au premier plan.

License

This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, version 2 of the License or any later version.

This means that you can include the source into your program, but if you make some change to it you must publish these changes. That’s all about it.


  • © 2003–2024 Michel Fortin.