从联系人中选择自动填充地址后,iOS UITextField 文本字段为空
Posted
技术标签:
【中文标题】从联系人中选择自动填充地址后,iOS UITextField 文本字段为空【英文标题】:iOS UITextField textfield empty after selecting autofill address from contacts 【发布时间】:2020-11-20 22:04:12 【问题描述】:我有一个 UITextField,用户在其中输入地址并选择从 MKLocalSearchCompleter 显示的匹配位置之一。
如果用户从如下所示的自动填充选项中选择地址,则 textField 为空。如果用户然后在自动填充地址之后键入任何内容,它可以正常工作,但在选择自动填充地址后,textField 本身被视为空。
代码如下
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool
if textField == locationTextField.textfield
let activeStr = textField.text!
if (activeStr.length() >= 2)
if !suggestionsShowing
locationSelectorView = LocatorSelectorView (using: [], rowHeight: selectorRowHt)
if let locationSelectorView = locationSelectorView
locationSelectorView.delegate = self
addressSuggestionView.addSubview(locationSelectorView)
locationSelectorView.snp.makeConstraints
$0.edges.equalToSuperview()
$0.height.equalTo(self.selectorRowHt * CGFloat(5) + 20)
stackview.insertArrangedSubview(addressSuggestionView, at: 1)
suggestionsShowing = true
self.geocoder?.appleGeocode(using: "\(textField.text!)\(string)", complete: (error) in
)
return true
【问题讨论】:
这些是一些大屏幕截图!您是否正确设置了您的委托? @ninehundreds 哪个代表?我有 MKLocalSearchCompleterDelegate 的委托和当用户点击搜索中的位置时选择的项目的委托,但这与字符串为空无关。 您还必须为 UITextField 设置委托,否则该功能不会触发。 @ninehundreds 是的,它已经设置好了。在 UITextField 中正常打字按预期工作,它只使用自动填充,我在 shouldChangeCharactersIn 方法中得到一个空字符串。如果我在自动填充后输入,一切都很好,但我不能指望用户这样做。 【参考方案1】:而不是使用:
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool
切换到:
func textFieldDidChange(_ textField: UITextField)
【讨论】:
以上是关于从联系人中选择自动填充地址后,iOS UITextField 文本字段为空的主要内容,如果未能解决你的问题,请参考以下文章
Telerik RadTextBox 在选择 Chrome 自动填充选项后变为只读