从联系人中选择自动填充地址后,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 自动填充选项后变为只读

如何从android中的联系人中搜索号码?

加载联系人以检索电子邮件地址并发送电子邮件

Laravel-从下拉列表中选择值后自动填充输入

从自动完成中选择项目后如何填充 Ext.js 4 网格面板单元格?

下拉选择后自动填充文本字段