我看过一大堆关于类似事情的帖子,但没有一个能与这个问题相匹配或解决这个问题。从iOS 7开始,每当我将UIButton
添加到UITableViewCell
甚至页脚视图中时,它都会“正常”工作,这意味着它会接收目标操作,但它不会像点击UIButton
时那样高亮显示。它使用户界面看起来很时髦,没有显示按钮对触摸的反应。
我非常确定这是iOS7中的一个错误,但是有没有人能找到一个解决方案,或者可以帮我找到一个:)
编辑:我忘了提到,如果我长时间按住按钮,它会高亮显示,但不会像添加到标准视图中那样快速点击。
代码:
创建按钮:
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
button.titleLabel.font = [UIFont systemFontOfSize:14];
button.titleLabel.textColor = [UIColor blueColor];
[button setTitle:@"Testing" forState:UIControlStateNormal];
[button addTarget:self action:@selector(buttonPressed:) forControlEvents: UIControlEventTouchDown];
button.frame = CGRectMake(0, 0, self.view.frame.size.width/2, 40);
我测试过的东西:
//删除UITableView
上的手势识别器,以防它们挡道。
for (UIGestureRecognizer *recognizer in self.tableView.gestureRecognizers) {
recognizer.enabled = NO;
}
//从单元格中移除手势
for (UIGestureRecognizer *recognizer in self.contentView.gestureRecognizers) {
recognizer.enabled = NO;
}
//这显示了一点轻触,但这不是所需的外观
button.showsTouchWhenHighlighted = YES;
发布于 2013-10-10 23:04:00
在表视图中,只需添加此属性即可。
tableview.delaysContentTouches = NO;
并在初始化单元格后添加cellForRowAtIndexPath,只需在下面添加代码。在iOS 6和iOS 7中,细胞的结构明显不同。
在iOS 7中,我们在UITableViewCell和内容视图之间有一个控件UITableViewCellScrollView。
for (id obj in cell.subviews)
{
if ([NSStringFromClass([obj class]) isEqualToString:@"UITableViewCellScrollView"])
{
UIScrollView *scroll = (UIScrollView *) obj;
scroll.delaysContentTouches = NO;
break;
}
}
发布于 2014-07-10 08:15:31
从iOS 8开始,我们需要将同样的技术应用于UITableView子视图(表包含一个隐藏的UITableViewWrapperView滚动视图)。不再需要迭代UITableViewCell子视图。
for (UIView *currentView in tableView.subviews) {
if ([currentView isKindOfClass:[UIScrollView class]]) {
((UIScrollView *)currentView).delaysContentTouches = NO;
break;
}
}
This answer应该与这个问题联系在一起。
发布于 2013-10-30 07:31:40
我试图将此添加到可接受的答案中,但从未成功。这是一种更安全的关闭cells delaysContentTouches属性的方法,因为它不查找特定的类,而是查找响应选择器的任何内容。
在单元格中:
for (id obj in self.subviews) {
if ([obj respondsToSelector:@selector(setDelaysContentTouches:)]) {
[obj setDelaysContentTouches:NO];
}
}
在TableView中:
self.tableView.delaysContentTouches = NO;
https://stackoverflow.com/questions/19256996
复制相似问题