UItableView Cell上的UIbutton不可点击
Posted
技术标签:
【中文标题】UItableView Cell上的UIbutton不可点击【英文标题】:UIbutton on UItableView Cell not clickable 【发布时间】:2011-08-09 13:41:24 【问题描述】:我在 uitable 视图的单元格中添加了 uibutton。我希望按下此按钮并与用户交互。我在单元实现类中添加了这行代码。
readMore = [[UIButton alloc]initWithFrame: CGRectMake(180, 50, 67, 25)];
[readMore addTarget:self action:@selector(readMoreClic:) forControlEvents:UIControlEventTouchUpInside];
[readMore setImage:[UIImage imageNamed:@"readmore.png"] forState:UIControlStateNormal];
[self addSubview:readMore];
问题是它没有被点击(选择单元格后它总是处于高亮状态)。我试过了:-
1- [self setSelectionStyle:UITableViewCellSelectionStyleNone];
2- cell.userInteractionEnabled = NO
但我仍然选择了单元格并以蓝色突出显示并且未单击按钮。即使我选择了
[self setSelectionStyle:UITableViewCellSelectionStyleGray]
请有人帮忙 谢谢
[注意我在同一个单元格中有一个 textView,它允许交互(选择和复制)] [我在 ios 4.3 中使用 xcode 4]
【问题讨论】:
这不会解决您的问题,但您应该将按钮添加到contentView
而不是直接添加到单元格。
已经试过了。同样的问题:(
【参考方案1】:
尝试不同的控制事件?:
[readMore addTarget:self action:@selector(readMoreClic:) forControlEvents:UIControlEventTouchDown];
【讨论】:
当我点击它时按钮没有变暗。问题不在事件处理程序上。我只想看到按钮被点击,不管采取什么行动。 啊,如果我现在对您的理解正确,您的按钮工作没有问题(即调用 readMoreClic)。如果父单元格突出显示,您根本看不到按钮的视觉变化?【参考方案2】:好吧,我不太明白为什么您的按钮没有响应,因为我遇到了类似的问题,但我使用了不同的解决方案。这是我所做的:
CGRect reuseableRect = CGRectMake(20, 290, 260, 37);
self.actionButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
self.actionButton.frame = reuseableRect;
[self.actionButton setTitle:@"Initialize" forState:UIControlStateNormal];
[self.actionButton addTarget:nil action:@selector(performAction) forControlEvents:UIControlEventTouchUpInside];
[self addSubview:self.actionButton];
其实我是这样做的:
self.actionButton = [[UIButton alloc] initWithFrame:reuseableRect];
但它没有用。所以我把它改成了
self.actionButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
resueableRect 只是一个我在整个视图初始化过程中都使用过的 CGRect。
至于你之前解决方案的三行,第一行:
[self setSelectionStyle:UITableViewCellSelectionStyleNone];
它正在对 tableView 及其单元格进行一些配置,因此不会影响按钮
第二个:
cell.userInteractionEnabled = NO;
它也没有配置按钮,更重要的是,由于单元格是按钮的超级视图,这一行会阻止任何用户交互。
第三个也没有对按钮做任何事情,所以如果你正在考虑配置按钮,我建议你删除所有这些
【讨论】:
我知道 (UITableViewCellSelectionStyleNone) 和 (UITableViewCellSelectionStyleNone) 但我在另一篇文章中读到它解决了问题。除了我希望用户单击它时不选择单元格仅按钮(我不希望选择单元格时为蓝色)【参考方案3】:您无需对选择样式或userInteractionEnabled
进行任何操作。确保 readMoreClic:
看起来像:
-(void)readMoreClic:(id)sender
【讨论】:
当我点击它时按钮没有变暗。问题不在事件处理程序上。我只想看到按钮被点击,不管采取什么行动。以上是关于UItableView Cell上的UIbutton不可点击的主要内容,如果未能解决你的问题,请参考以下文章
iOS UITableView-纯代码创建UITableView,Cell点击事件,Cell左滑删除