gpt4 book ai didi

ios - 无法单击 GMaps for iOS subview 上的文本字段

转载 作者:搜寻专家 更新时间:2023-11-01 05:48:50 27 4
gpt4 key购买 nike

我想添加一个搜索栏(就像在 iOS 版 Google map 应用中一样)。

为了看起来和那个 App 一样,我创建了一个 UITextField。

例如:

override func viewDidLoad() {
/* Add Google Map */

let camera = GMSCameraPosition.cameraWithLatitude(49.077872,longitude: 19.450339, zoom: 17)
mapView = GMSMapView.mapWithFrame(CGRectZero, camera: camera)
self.view = mapView
mapView.delegate = self
mapView.indoorDisplay.delegate = self
mapView.myLocationEnabled = true
mapView.settings.myLocationButton = true

mapView.padding = UIEdgeInsetsMake(64, 0, 64, 0)
mapView.setMinZoom(15, maxZoom: 19)

// add Searchbar

let screenWidth = UIScreen.mainScreen().bounds.width
searchTextField = UITextField(frame: CGRectMake(16, 50, screenWidth - 32, 40))
searchTextField.delegate = self
searchTextField.placeholder = "Gebäude und Räume suchen"
searchTextField.backgroundColor = UIColor.whiteColor()
searchTextField.clearButtonMode = UITextFieldViewMode.WhileEditing
searchTextField.layer.borderWidth = 1
searchTextField.layer.borderColor = UIColor.customGrey().CGColor
searchTextField.font = UIFont.systemFontOfSize(16.0)

let showCategories = UIButton(type: .Custom)
showCategories.frame = CGRectMake(0, 0, 40, 40)
showCategories.setTitle(String.fontAwesomeIconWithCode("fa-calendar-plus-o"), forState: .Normal)
showCategories.setTitleColor(UIColor.customDarkGrey(), forState: .Normal)
showCategories.titleLabel?.font = UIFont.fontAwesomeOfSize(20)
showCategories.addTarget(self,action: "calendarAddButtonPressed",forControlEvents: UIControlEvents.TouchUpInside)

searchTextField.rightView = showCategories
searchTextField.rightViewMode = .Always
searchTextField.userInteractionEnabled = true

self.mapView.addSubview(searchTextField)

Button 工作正常,但我无法专注于 TextField。

设置错误时(在 ViewDidLoad 中)。

searchTextField.becomesFirstResponder()

键盘在那里。

还有那个事件:

func textFieldDidBeginEditing(textField: UITextField) {
print("start searching")
self.becomeFirstResponder()
}

没有开火。

有什么想法吗?当 SubView 不在顶层时 - 按钮不应该也起作用,或者?

最佳答案

接受的答案对我一点帮助都没有,但结果是 another question 在 SO 上是相似的,但使用的是 Objective C。默认情况下,所有 GMSMapView 都有一个 GMSBlockingGestureRecognizer,这就是您的 textField 未按您希望的方式工作的原因。解决方案是将其删除,这样您就可以将其放入您的 viewDidLoad() 方法中:

swift 3

for gesture in mapView.gestureRecognizers! {
mapView.removeGestureRecognizer(gesture)
}

或者,如果您出于某种原因向 mapView 添加了其他手势识别器,您可以这样做:

for (index,gesture) in mapView.gestureRecognizers!.enumerated() {
if index == 0 {
mapView.removeGestureRecognizer(gesture)
}
}

由于 GMSBlockingGestureRecognizer 是默认添加的,因此它将始终是手势识别器数组中的第一个。

此外,确保您将 for 循环放在只会调用一次的位置,因为如果多次调用,您可能会无意中删除其他手势。

关于ios - 无法单击 GMaps for iOS subview 上的文本字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35888396/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com