在下面的代码中,我创建了一个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:]
,不提及该操作。
因此触摸事件在该子视图中没有按预期工作。
关于如何发生以及我该怎么做的任何想法?
谢谢。
答案 0 :(得分:0)
我认为你不需要创建一个类别并添加touchesBegan
:来使这项工作成功。你有没有确保label.userInteractionEnabled = YES;
?