我想通过OS禁用自动文本捕获,如果你输入UITextField/UITextView OS在你的应用程序中捕获这个文本(如果没有在它的字典中找到),它将作为纯文本存储在/ text.dat文件中根/库/键盘
现在,如果您打开并阅读此文件,则可以轻松阅读您在应用程序中输入的内容.
我的要求是,我如何禁用此功能,以便在我的应用程序中,操作系统不会捕获文本输入到此文件中?
您甚至可以在iPhone Simualtor上查看此信息
在模拟器中,如果我有一个UITextField设置为安全(自动完成设置为关闭,虽然这应该是默认值)我从来没有看到我在〜中键入的任何文本/Library/Application Support/iPhone Simulator/User/Library/Keyboard/dynamic-text.dat,虽然UITextField设置为自动完成确实有文本最终在那里.
如果我关闭之前捕获的字段上的自动更正,我看到我输入的条目不再显示在该文件中.
我在模拟器上和设备上都尝试了这一点 - 在设备上我使用安全且不安全的文本字段运行我的相同测试应用程序(我交替打开和关闭自动更正),然后使用SpyPhone检查键盘缓存.再次在文本字段被标记为安全或已关闭自动更正的所有情况下,我没有看到我键入的键盘缓存中显示的任何内容,如果我将其键入到启用了自动更正的文本字段中 - 只是为了要明确,即使在IB定义的文本字段中明确打开自动更正,如果该字段也被标记为安全,则不记录任何内容(我也不确定它是否尝试自动更正).
现在我注意到,如果我尝试使用UITextView而不是UITextField,那么即使关闭自动更正也不会阻止文本被记录.这似乎是一种疏忽而不是设计选择.解决方法是使用UITextField,但这并不总是可行的......我会在Apple上提交Radar.
我还可以验证我在SpyPhone中没有显示我使用的常用密码(在Safari或应用程序中),因此它们不在缓存中.但几乎所有收集密码的应用程序都使用UITextField来执行此操作.