如何关闭iOS 9模拟器中的辅助功能检查器?

时间:2015-12-24 10:43:55

标签: ios-simulator accessibility xcode-ui-testing kif kif-framework

我的KIF测试启用了辅助功能检查器(显然KIF必须工作。)问题是,它的窗口遮挡了一些后续UI测试需要点击的控件,这些测试失败。

如何在完成KIF测试后关闭辅助功能检查器,以便我的UI测试可以运行?

(关闭"手动"来自模拟器的设置应用程序不是解决方案 - 我正在寻找可以通过代码调用的内容,设置在目标中或...?)

2 个答案:

答案 0 :(得分:1)

默认情况下不启用。您必须手动打开它。

答案 1 :(得分: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];
}