Sam*_*all 6 iphone accessibility
我的iPhone应用程序的UI有很多静态标签,我在Interface Builder中为它们设置了可访问性提示.我想以编程方式访问这些,以便我可以提供帮助气泡 - UILabel的自定义子类识别触摸并显示值为[self accessibilityHint]的气泡.
但是,[self accessibilityHint]返回nil.如果我以编程方式设置值[self setAccessibilityHint:@"Hello"],那么我可以从我的程序中访问该值,但是NIB的初始值不可用.
如果我在启动应用程序之前打开辅助功能检查器,则可以通过accessibilityHint属性获取NIB文件中的提示.是否有某些标志确定系统是否加载这些属性; 如果有,是否有某种方法可以设置它?
我的备份选项是让我的控制器保持对每个UI标签的引用,并在代码中设置accessibilityHint,但这非常丑陋和繁琐.
嗯,如果我打开 Library/Preferences/com.apple.Accessibility.plist 并将 ApplicationAccessibilityEnabled 从 false 更改为 true,那么它就可以工作。(该路径位于 ~/Library/Application Support/iPhone Simulator/)
我尝试在 main() 的开头添加此内容:
CFPreferencesSetAppValue(@"AccessibilityEnabled", kCFBooleanTrue, @"com.apple.Accessibility");
CFPreferencesSetAppValue(@"ApplicationAccessibilityEnabled", kCFBooleanTrue, @"com.apple.Accessibility");
CFPreferencesAppSynchronize(@"com.apple.Accessibility");
Run Code Online (Sandbox Code Playgroud)
但没有成功。(它将一个文件写入Applications/{UUID}/Library/Preferences/com.apple.Accessibility.plist)
编辑:单步执行 UIKit 代码后,确定辅助功能是否打开或关闭的调用是
CFPreferencesGetBooleanValue(@"ApplicationAccessibilityEnabled", @"/Users/sam/Library/Application Support/iPhone Simulator/User/Library/Preferences/com.apple.Accessibility", NULL);
Run Code Online (Sandbox Code Playgroud)
请注意奇怪的应用程序密钥,我还不确定这个值来自哪里(我对 386 汇编的知识非常薄弱!)但我可以将此密钥传递给 CFPreferencesSetAppValue 并且它可以工作,至少在模拟器上(我不知道)目前可以访问实际设备)。
此外,这还将打开所有应用程序的应用程序可访问性(因为它将其写入全局 plist)。如果应用程序启动后该值应设置回 false,我可以从 main() 设置一个标志。
| 归档时间: |
|
| 查看次数: |
2315 次 |
| 最近记录: |