UIButton只响应一小块区域

时间:2010-05-29 14:45:08

标签: iphone objective-c cocoa-touch uibutton

我正在尝试将UIButton添加到UIView中,但是在让它响应触摸时遇到了一些麻烦。

我有一个方法,在我为它提供标签后返回UIButtons:

- (UIButton*)niceSizeButtonWithTag:(int)tag {

    UIButton * aButton = [UIButton buttonWithType:UIButtonTypeCustom];
    [aButton setTag:tag];
    [aButton addTarget:self action:@selector(buttonWasTapped:) forControlEvents:UIControlEventTouchUpInside];

    CGRect newFrame = aButton.frame;
    newFrame.size.width = 44;
    newFrame.size.height = 44;
    [aButton setFrame:newFrame];

    return aButton;
}

正如您所看到的,我正在创建一个新按钮并增加尺寸。 我用以下方式使用它:

UIButton * anotherButton = [self niceSizeButtonWithTag:1];
[anotherButton setImage:[UIImage imageNamed:@"image" withExtension:@"png"] forState:UIControlStateNormal];
[anotherButton setCenter:CGPointMake(middleOfView)];
[aView addSubview:anotherButton];

我创建了很多像这样的按钮,因此该方法的原因。

始终创建按钮并完美地添加到子视图中。我可以看到图像,它们处于正确的位置。问题是他们只对微小的条带做出反应。

在此附图中,

alt text http://web1.twitpic.com/img/107755085-5bffdcb66beb6674d01bb951094b0e55.4c017948-full.png

  • 黄色显示按钮的整个框架,
  • 红色显示将响应触摸的区域。
  • 灰色显示按钮添加到的视图的一部分。

如果有人能够解释为什么会发生这种情况,那将非常有用。

更新

我应该提一下,我正在尝试将此按钮添加到UIView,这是UITableViewCell的子视图。

更新2:

将它直接添加到UITableViewCell有效,将它添加到UITableViewCell上的UIView会导致错误。

最终更新 问题是我将包含按钮的视图发送到UITableViewCell上子视图的后面。摆脱sendSubviewToBack:调用修复它。

1 个答案:

答案 0 :(得分:1)

添加按钮后,是否有其他视图添加到此包含视图?尝试将视图的一些背景颜色设置为blueColor,redColor和其他颜色,以便更好地查看应用中的视图堆栈。然后你应该可以很容易地看到是否有某种视图阻止按钮。