2

Инспектор доступности включен в мои тесты KIF (видимо, это необходимо для работы KIF). Проблема заключается в том, что в окну закрыты элементы управления, которые необходимо использовать для некоторых последующих тестов пользовательского интерфейса, и эти тесты терпят неудачу.Как отключить Инспектор доступности в симуляторе iOS 9?

Как отключить Инспектор доступности, когда мои тесты KIF выполняются с ним, чтобы мои тесты пользовательского интерфейса могли работать?

(Включение его «вручную» из приложения настройки тренажера не является решением-я искал что-то я могу позвонить из кода, устанавливается в цель или ...?)

ответ

1

It по умолчанию не включен. Вы должны включить его вручную.

+0

Вы правы. Это мои тесты KIF, включающие его, а не отключение - см. Правки выше. –

1

Я увидел следующее на Stew Gleadow's blog.

Вам просто нужно изменить строку:

CFPreferencesSetValue(CFSTR("ApplicationAccessibilityEnabled"), kCFBooleanFalse, accessibilityDomain, kCFPreferencesAnyUser, kCFPreferencesAnyHost); 

изменения kCFBooleanTrue в kCFBooleanFalse.

+ (void)_enableAccessibilityInSimulator { 
    NSAutoreleasePool *autoreleasePool = [[NSAutoreleasePool alloc] init]; 
    NSString *appSupportLocation = @"/System/Library/PrivateFrameworks/AppSupport.framework/AppSupport"; 

    NSDictionary *environment = [[NSProcessInfo processInfo] environment]; 
    NSString *simulatorRoot = [environment objectForKey:@"IPHONE_SIMULATOR_ROOT"]; 
    if (simulatorRoot) { 
     appSupportLocation = [simulatorRoot stringByAppendingString:appSupportLocation]; 
    } 

    void *appSupportLibrary = dlopen([appSupportLocation fileSystemRepresentation], RTLD_LAZY); 

    CFStringRef (*copySharedResourcesPreferencesDomainForDomain)(CFStringRef domain) = dlsym(appSupportLibrary, "CPCopySharedResourcesPreferencesDomainForDomain"); 

    if (copySharedResourcesPreferencesDomainForDomain) { 
     CFStringRef accessibilityDomain = copySharedResourcesPreferencesDomainForDomain(CFSTR("com.apple.Accessibility")); 

     if (accessibilityDomain) { 
      CFPreferencesSetValue(CFSTR("ApplicationAccessibilityEnabled"), kCFBooleanFalse, accessibilityDomain, kCFPreferencesAnyUser, kCFPreferencesAnyHost); 
      CFRelease(accessibilityDomain); 
     } 
    } 

    [autoreleasePool drain]; 
}