iOS 8 不再支持 UITextAutocapitalizationTypeNone。

10

我有一个外语词典应用程序,允许用户输入音译(转换成英文)的单词。大多数条目都是小写字母,但有几个条目是大写字母。从 IOS 8 开始,搜索栏不再识别 UITextAutocapitalizationTypeNone。这给最终用户带来了相当大的沮丧。有没有实用的策略来关闭首字母大写?当前在 UISearchBar 的故事板设置中已经关闭了它。

这是一个现有的应用程序,最初是为 iOS 6 编写的。当前的 Apple 文档指出 AutocapitalizationType 在 iOS 2 到 iOS 7.1 中可用。用户在升级到 iOS 8 后报告了这一变化。


当你说它没有被识别时,你是指编译器警告还是输入的文本以某种方式被大写?展示一下你如何设置搜索栏。 - rmaddy
@rmaddy 搜索栏在Storyboard中设置。即使使用删除键回到第一个位置,大写锁定键也会自动打开第一个字符。 - Bill
autocapitalizationType 其实并未被废弃。文档有误导之嫌。在 iOS 8.0 之前,UISearchBar 拥有 autocapitalizationType 属性。而在 iOS 8.0 及以后,该属性已被移除,但新增了 UITextInputAttributes 协议,其中包含了 autocapitalizationType 属性。因此实际上什么也没有改变。该属性依旧存在,只是声明方式不同罢了。如果从 storyboard 中无法设置该属性,则可以尝试直接通过代码进行设置。 - rmaddy
@rmaddy,问题解决了。看起来我需要在代码中设置它:self.searchBar.autocapitalizationType = UITextAutocapitalizationTypeNone;如果你把你的评论作为答案提交,我会标记它。谢谢... - Bill
1个回答

14

autocapitalizationType实际上并未被弃用。文档有误。在iOS 8.0之前,UISearchBar具有 autocapitalizationType 属性。从iOS 8开始,该属性已被移除,但添加了 UITextInputAttributes 协议。该协议提供了 autocapitalizationType 属性。因此,实际上什么都没有改变。该属性仍然存在,只是声明方式不同。

如果故事板无法提供设置autocapitalizationType属性的有效方法,请在代码中进行设置:

self.someSearchbar.autocapitalizationType = UITextAutocapitalizationTypeNone;

4
在 Swift 中使用 UITextAutocapitalizationType.None。 - quemeful
1
在Storyboard中设置这个属性没有任何作用,但是在代码中编写就可以解决问题!因此我点了赞,谢谢! - Artem Aleksandrov
在 Swift 中,autocapitalizationType = UITextAutocapitalizationType.none 我今天试过可行。 - mherzl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接