为啥我的自定义单元格仅在用户移开手指时突出显示?
Posted
技术标签:
【中文标题】为啥我的自定义单元格仅在用户移开手指时突出显示?【英文标题】:Why does my custom cell only highlight when the user removes their finger?为什么我的自定义单元格仅在用户移开手指时突出显示? 【发布时间】:2011-04-20 09:20:30 【问题描述】:我已经创建了一个自定义的 UITableViewCell,并使用以下代码设置了 backgroundView:
- (void)layoutSubviews
[super layoutSubviews];
self.backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"NormalImage"]];
self.selectedBackgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"HighlightedImage"]];
// other layout stuff
这很好用,只是当用户选择一行时,它不会突出显示 - 它只会在用户抬起他们的手指时突出显示(因此在过渡到下一个之前你会短暂地看到它突出显示看法)。如果我删除 self.selectedBackgroundView
行,以便正常的 ios 蓝色单元格突出显示,它会在单元格被选中时突出显示。
这是为什么?
【问题讨论】:
【参考方案1】:在自定义表格单元格中尝试此代码
- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated
[super setHighlighted:highlighted animated:animated];
if (highlighted)
self.selectedBackgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"HighlightedImage"]];
else
self.backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"NormalImage"]];
【讨论】:
【参考方案2】:您可以在初始化自定义单元格时分配 backgroundView 和 selectedBackgroundView。根据apple's doc,selectedBackgroudView作为单元格被选中时的背景。
如果你在 -(void)layoutSubviews 中编写这些代码,当单元格被选中或取消选中时,它会调用 -(void)layoutSubviews。然后,每次自定义单元格的状态发生更改时,您的 backgroundView 和 selectedBackgroundview 都会重新分配给新的 UIView 实例。
【讨论】:
在init方法中设置backgroundView和selectedBackgroundView不起作用。以上是关于为啥我的自定义单元格仅在用户移开手指时突出显示?的主要内容,如果未能解决你的问题,请参考以下文章
检测 UIGestureRecognizer 点击并释放以显示和删除 UIView