• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - 谷歌在 swift 中放置自动完成功能并不完美

[复制链接]
菜鸟教程小白 发表于 2022-12-13 15:31:00 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我尝试从 google place 进行“地点自动完成”,我直接从网站复制粘贴代码 google developer我也已经设置了 api key ,但问题是为什么当我输入一个地方时结果看起来很奇怪,正如你在 picture 上看到的那样它似乎有效但并不完美。这是我的代码:

import UIKit
import GoogleMaps

class FetcherSampleViewController: UIViewController {

  var textField: UITextField?
  var resultText: UITextView?
  var fetcher: GMSAutocompleteFetcher?

  override func viewDidLoad() {
    super.viewDidLoad()

    self.view.backgroundColor = UIColor.whiteColor()
    self.edgesForExtendedLayout = .None

    // Set bounds to inner-west Sydney Australia.
    let neBoundsCorner = CLLocationCoordinate2D(latitude: -33.843366,
      longitude: 151.134002)
    let swBoundsCorner = CLLocationCoordinate2D(latitude: -33.875725,
      longitude: 151.200349)
    let bounds = GMSCoordinateBounds(coordinate: neBoundsCorner,
      coordinate: swBoundsCorner)

    // Set up the autocomplete filter.
    let filter = GMSAutocompleteFilter()
    filter.type = .Establishment

    // Create the fetcher.
    fetcher = GMSAutocompleteFetcher(bounds: bounds, filter: filter)
    fetcher?.delegate = self

    textField = UITextField(frame: CGRect(x: 5.0, y: 0,
      width: self.view.bounds.size.width - 5.0, height: 44.0))
    textField?.autoresizingMask = .FlexibleWidth
    textField?.addTarget(self, action: "textFieldDidChange:",
      forControlEvents: .EditingChanged)

    resultText = UITextView(frame: CGRect(x: 0, y: 45.0,
      width: self.view.bounds.size.width,
      height: self.view.bounds.size.height - 45.0))
    resultText?.backgroundColor = UIColor(white: 0.95, alpha: 1.0)
    resultText?.text = "No Results"
    resultText?.editable = false

    self.view.addSubview(textField!)
    self.view.addSubview(resultText!)
  }

  func textFieldDidChange(textField: UITextField) {
    fetcher?.sourceTextHasChanged(textField.text!)
  }

}

extension FetcherSampleViewController: GMSAutocompleteFetcherDelegate {
  func didAutocompleteWithPredictions(predictions: [GMSAutocompletePrediction]) {
    let resultsStr = NSMutableString()
    for prediction in predictions {
      resultsStr.appendFormat("%@\n", prediction.attributedPrimaryText)
    }

    resultText?.text = resultsStr as String
  }

  func didFailAutocompleteWithError(error: NSError) {
    resultText?.text = error.localizedDescription
  }
}

谁能帮帮我?



Best Answer-推荐答案


这是因为 prediction.attributedPrimaryText 是一个属性字符串。试试下面的代码

func didAutocompleteWithPredictions(predictions: [GMSAutocompletePrediction]) {
    let resultsStr = NSMutableAttributedString()
    for prediction in predictions {
        resultsStr.appendAttributedString(prediction.attributedPrimaryText)
        resultsStr.appendAttributedString(NSAttributedString(string: "\n"))
    }
    resultText?.attributedText = resultsStr
}

关于ios - 谷歌在 swift 中放置自动完成功能并不完美,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36248232/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap