Joe*_*ell 4 cocoa-touch objective-c uitableview uiview
我在tableView Cell中有一个按钮,我需要响应触摸事件.通常情况下,这很容易解决
[cell.playButton addTarget:self action:@selector(playButtonPressed:) forControlEvents:UIControlEventTouchUpInside];
Run Code Online (Sandbox Code Playgroud)
在-tableView中:cellForRowAtIndexPath:
我遇到的问题是我的按钮是在自定义UITableViewCell子类内部,也是我在该类内部创建的视图的子视图.
例如:
UIView *view = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
self.theView = view;
[self addSubview:view];
[view release];
UIButton *playButton = [UIButton buttonWithType:UIButtonTypeCustom];
playButton.frame = CGRectMake(5, 5, 100, 30);
[playButton setImage:[UIImage imageNamed:@"button_playvid.png"] forState:UIControlStateNormal];
[playButton setImage:[UIImage imageNamed:@"button_playvid_active.png"] forState:UIControlStateHighlighted];
self.playButton = playButton;
[self.theView addSubview:playButton];
Run Code Online (Sandbox Code Playgroud)
当按钮是我在自定义UITableViewCell中创建的视图的子视图时,单元格突出显示而不是按下按钮,因此我在-tableView:cellForRowAtIndexPath中设置的目标永远不会被调用.不知道为什么..有什么帮助吗?
谢谢,
乔尔
PS.我意识到创建一个完全像这样的背景视图可能没有实际的理由,因为已经存在一个.这只是我用来解释我遇到的问题的示例代码..:D
谢谢你的期待!
你要添加的UIView实际上是一个UIImageView.来自文档:
默认情况下,新图像视图对象配置为忽略用户事件.如果要在UIImageView的自定义子类中处理事件,则必须在初始化对象后显式将userInteractionEnabled属性的值更改为YES.
我认为userInteractionEnabled在这种情况下,要么级联到子视图,要么超级视图不会将触摸传递给其子视图,因此您的按钮将不会接收到触摸.设置你的图像视图.userInteractionEnabled = YES,你应该没事.
| 归档时间: |
|
| 查看次数: |
3842 次 |
| 最近记录: |