繁体   English   中英

当UIButton位于MapView顶部时,不可单击

[英]UIButton is not clickable when it's on top of a MapView

我已经搜索了很多时间,但到目前为止我找不到确切的问题。

我已经在InterfaceBuilder中创建了一个mapView。 通过单击按钮,我添加了另一个视图。

self.buttonView = [[ButtonView alloc] init];
self.buttonView.backgroundColor = [UIColor whiteColor];
[self.view addSubview:self.buttonView];

在创建的buttonView中,以编程方式创建5个按钮,如下所示:

UIButton *button1 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
button1.frame = CGRectMake(25, 275, 100, 30);
[button1 setTitle:@"button1!" forState:UIControlStateNormal];
[self addSubview:button1];

这些按钮正确显示,但是不可单击。 我已经尝试了几件事,但是到目前为止似乎没有任何效果。 每当我单击按钮时,都会单击mapView。 例如,当我双击一个按钮时,mapView会放大。mapView和buttonView都是“视图”的子视图。

我想将buttonView放在mapView的顶部(它确实要这样做),并且让mapView滚动到buttonView的下方(它确实要这样做),而按钮却保持在它们所在的位置(它们确实如此),但是它们不可单击

非常感谢您的帮助! :-)

EDIT1:尝试过self.buttonView.userInteractionEnabled = YES; -没有任何改变。 (也适用于按钮本身!

一个非常简单的错误,我的“上方”视图不可见,并且拒绝单击:S下方的按钮

我使用了界面生成器,但没有看到该按钮。 我必须将MKMapView设置为隐藏,直到显示按钮并将其放置在正确的位置。 然后,将MKMapView设置为可见。

这是我必须在界面生成器中执行的步骤,才能显示我的按钮

  1. 创建一个包含视图的UIViewController
  2. 添加一个MKMapView并设置约束

在IB的视图控制器中显示MKMapView

  1. 在适用的情况下,在与MKMapView相同的视图中添加UIButton,设置图像和文本。 如果在尝试调整按钮大小或移动按钮时MKMapView消失,则地图视图会将宽度和高度设置为零。 在“大小”检查器中为地图视图输入新值,它将重新调整大小。 或者,您可以将按钮移到MKMapView的其他位置,然后将按钮移回所需位置。

  2. 重要的部分是设置UIButton的约束。 我将MKMapView设置为隐藏,直到获得正确的大小和位置,然后将其设置回可见。

    在IB中的约束下,在MKMapView顶部显示一个UIButton

这是模拟器中的外观

显示正在运行的应用程序,其中有地图上的按钮

不确定这是一个错字错误:您应该将子视图添加到self.buttonView中,对吗?

[self.buttonView addSubview:button1]

看到它有帮助

我曾经有一个类似的案例,解决方案是

[button1 setExclusiveTouch:YES];

如果控件元素下的视图也处理触摸事件,则控件可能以意外的方式工作。

使用Cartogaphy,我还必须设置类似于@Maria的高度和宽度约束。 因此,以下操作将无效:

categoryButton.addTarget(self, action: "toggleCategoryDropdown:", forControlEvents: UIControlEvents.TouchUpInside)
categoryButton.backgroundColor = UIColor.purpleColor()
categoryButton.userInteractionEnabled = true

self.addSubview(categoryButton)

constrain(categoryButton) {
    categoryButton in

    categoryButton.top == categoryButton.superview!.top + 26
    categoryButton.left == categoryButton.superview!.left + globalConfig.margin
}

但这确实有效

categoryButton.addTarget(self, action: "toggleCategoryDropdown:", forControlEvents: UIControlEvents.TouchUpInside)
categoryButton.backgroundColor = UIColor.purpleColor()
categoryButton.userInteractionEnabled = true

self.addSubview(categoryButton)

constrain(categoryButton) {
    categoryButton in

    categoryButton.top == categoryButton.superview!.top + 26
    categoryButton.left == categoryButton.superview!.left + globalConfig.margin
    categoryButton.width == 100
    categoryButton.height == 100
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM