2011-08-03 5 views
6

Las aplicaciones de cacao que utilizan la API de NSAccessibility requieren que se active "habilitar el acceso para dispositivos de asistencia" en el panel de preferencias de Universal Access. He visto muchas aplicaciones mostrar una advertencia si esto está deshabilitado cuando se ejecutan. ¿Cómo compruebo programáticamente si esto está habilitado para que pueda mostrar una advertencia en mi aplicación?Determine de forma programática si la opción "habilitar el acceso para dispositivos de asistencia" está marcada en la aplicación Cocoa

+0

vez que son capaces de detectar que el ajuste se ha encendido, ¿cómo empezar a usar el acceso de asistencia? ¿Se requiere un reinicio de la aplicación? – cksubs

+0

Al hacerle esta pregunta, parece que necesita reiniciar: http://stackoverflow.com/questions/9132845/how-do-i-give-my-app-assistive-access-privileges-once-enable-access- for-assis – cksubs

Respuesta

4

Creo que estás buscando AXAPIEnabled().

extern Boolean AXAPIEnabled(); 

Citando the docs:

Devuelve si la API de accesibilidad está activada.

Devuelve TRUE si la API de accesibilidad está habilitada actualmente; de ​​lo contrario, FALSE.

aplicaciones Assistive no funcionarán si la API de accesibilidad no es habilitado o si el proceso de llamada no es un cliente de confianza accesibilidad . Los usuarios pueden habilitar la API de accesibilidad marcando "Habilitar el acceso para dispositivos de asistencia" en Preferencias de acceso universal.

+0

También debe leer la discusión [AXIsProcessTrusted/AXMakeProcessTrusted] (http://www.cocoabuilder.com/archive/cocoa/135734-axisprocesstrusted-axmakeprocesstrusted.html). Aprenderá que también debe verificar 'AXIsProcessTrusted()'. – 0xced

+1

'AXAPIEnabled()' ha quedado en desuso en OS X 10.9 Mavericks – pkamb

+1

Sí, para esta funcionalidad en 10.9, vea [esta pregunta] (http://stackoverflow.com/questions/17693408/enable-access-for-assistive-devices -programmáticamente-en-10-9) y su respuesta mejor calificada. – zpasternack

11

En OS X 10.9 Mavericks, AXAPIEnabled()has been deprecated.

AXIsProcessTrustedWithOptions se puede utilizar en su lugar:

NSDictionary *options = @{(id)kAXTrustedCheckOptionPrompt: @YES}; 
BOOL accessibilityEnabled = AXIsProcessTrustedWithOptions((CFDictionaryRef)options); 

Si pasa en YES para kAXTrustedCheckOptionPrompt, el sistema mostrará al usuario un poco de diálogo útil con un enlace a Preferencias del sistema:

"YourApp .app desea controlar esta computadora usando las funciones de accesibilidad ".

enter image description here

Cuestiones relacionadas