如何让MKLocalSearchCompleter始终返回英文地址搜索结果?
解决思路:强制设置搜索补全器的Locale
要实现无论系统语言如何,地址补全结果始终为英文,且不限制搜索区域,可以通过设置MKLocalSearchCompleter的locale属性为英语区域标识符来实现,无需依赖region属性限制范围。
具体实现步骤
MKLocalSearchCompleter的locale属性决定了搜索结果的本地化语言展示,将其设置为英语相关的Locale(如en_US_POSIX),就能强制返回英文地址结果,同时不会缩小搜索范围。
修改你的初始化代码,添加Locale设置:
private lazy var localSearchCompleter: MKLocalSearchCompleter = { let completer = MKLocalSearchCompleter() completer.delegate = self completer.resultTypes = .address // 强制使用英文Locale,确保结果始终为英文 completer.locale = Locale(identifier: "en_US_POSIX") return completer }()
补充说明
- 使用
en_US_POSIX而非普通的en,是因为它是一个稳定的、不随系统区域设置变化的Locale,能避免因区域变体导致的语言不一致问题。 - 该属性从iOS 10开始支持,若需兼容更低版本,可考虑在搜索结果返回后手动将地址字段转换为英文,但这种方式复杂度更高,推荐优先使用Locale设置方案。
内容的提问来源于stack exchange,提问作者Ron Tabachnik
相关产品推荐
相关产品推荐

