subView的touchesBegan:withEvent:未调用选择器

时间:2011-08-22 07:50:08

标签: iphone uiview touch-event

在下面的代码中,我创建了一个MTLabel对象和一个UIButton对象,更改了它们的框架,然后添加UIButton作为'MTLabel'的子视图

MTLabel* label = [MTLabel labelWithTitle:title];
label.frame = ...
UIButton* rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
[rightButton addTarget:self
                action:@selector(didSelectStore:)
      forControlEvents:UIControlEventAllEvents];
[label addSubview:rightButton];
rightButton.frame = ...;
[an addLabel:label];

之后屏幕上会显示UIView,但在触摸didSelectStore:时,rightButton永远不会被调用。

由于MTLabel是在第三方库中定义的,所以我没有它的源代码。所以我写了这样一个类别:

@implementation MTLabel(button)
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    [super touchesBegan:touches withEvent:event];
}
......
@end

在执行此操作后,仍未调用[rightButton touchesBegan:event:],不提及该操作。

因此触摸事件在该子视图中没有按预期工作。

关于如何发生以及我该怎么做的任何想法?

谢谢。

1 个答案:

答案 0 :(得分:0)

我认为你不需要创建一个类别并添加touchesBegan:来使这项工作成功。你有没有确保label.userInteractionEnabled = YES;