【发布时间】:2012-02-14 05:40:41
【问题描述】:
我在 tableView 单元中有一个按钮,我需要响应触摸事件。通常这很容易解决
[cell.playButton addTarget:self action:@selector(playButtonPressed:) forControlEvents:UIControlEventTouchUpInside];
-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];
当按钮是我在自定义 UITableViewCell 中创建的视图的子视图时,单元格会突出显示,而不是按下按钮,因此我在 -tableView:cellForRowAtIndexPath 中设置的目标永远不会被调用。不知道为什么..有什么帮助吗?
谢谢,
乔尔
PS。我意识到创建一个完全像这样的背景视图可能没有实际的理由,因为已经有一个。这只是我用来解释我遇到的问题的示例代码..:D
感谢您的关注!
【问题讨论】:
-
使用“playButtonPressed:”方法实现编辑您的问题。
-
您是说您在视图控制器中创建一个 UIButton 并将其添加为视图控制器视图的子视图和 uitableview 的单元格(也添加到同一视图控制器的视图)??这不是个好主意...
-
将按钮添加到新的 [view addSubview:playButton]
-
playButtonPressed: 只是一个 NSLog() 语句,告诉我该代码是否被调用。问题是它没有,所以 playButtonPressed: 实现是否正确并不重要?
标签: objective-c cocoa-touch uiview uitableview