1

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

我在 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;- 不会改变任何东西。(也适用于按钮本身!

4

5 回答 5

3

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

于 2012-05-01T15:20:56.023 回答
1

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

这是我在界面构建器中必须采取的步骤才能显示我的按钮

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

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

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

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

    在 MKMapView 顶部显示一个 UIButton,在 IB 中具有约束

这是它在模拟器中的样子

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

于 2014-11-12T21:39:44.137 回答
0

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

[self.buttonView addSubview:button1]

看看有帮助

于 2012-04-25T03:16:11.957 回答
0

我曾经遇到过类似的情况,解决方案是

[button1 setExclusiveTouch:YES];

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

于 2012-04-25T13:19:06.923 回答
0

使用 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
}
于 2015-12-23T19:34:24.860 回答