UIButton not showing highlight on tap in iOS7
ios, ios7, iphone, objective-c, uitableview
Solution
In that tableview you just add this property.
tableview.delaysContentTouches = NO;
And add in cellForRowAtIndexPath after you initiate the cell you just add below code. The structure of the cell is apparently different in iOS 6 and iOS 7. iOS 7 we have one control UITableViewCellScrollView In between UITableViewCell and content View.
for (id obj in cell.subviews)
{
if ([NSStringFromClass([obj class]) isEqualToString:@"UITableViewCellScrollView"])
{
UIScrollView *scroll = (UIScrollView *) obj;
scroll.delaysContentTouches = NO;
break;
}
}
Problem
I've looked at a ton of posts on similar things, but none of them quite match or fix this issue. Since iOS 7, whenever I add a `UIButton` to a `UITableViewCell` or even to the footerview it works "fine", meaning it receives the target action, but it doesn't show the little highlight that normally happens as you tap a `UIButton`. It makes the UI look funky not showing the button react to touch. I'm pretty sure this counts as a bug in iOS7, but has anyone found a solution or could help me find one :) Edit: I forgot to mention that it will highlight if I long hold on the button, but not a quick tap like it does if just added to a standard view. Code: Creating the button: ``` 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); ``` Things I've Tested: //Removing gesture recognizers on `UITableView` in case they were getting in the way. ``` for (UIGestureRecognizer *recognizer in self.tableView.gestureRecognizers) { recognizer.enabled = NO; } ``` //Removing gestures from the Cell ``` for (UIGestureRecognizer *recognizer in self.contentView.gestureRecognizers) { recognizer.enabled = NO; } ``` //This shows the little light touch, but this isn't the desired look ``` button.showsTouchWhenHighlighted = YES; ```