我在以下位置有一个自定义动画:
- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated
的UITableViewCell
,类似:
[UIView animateWithDuration:0.15 animations:^{
self.center = CGPointMake(self.center.x + 110, self.center.y);
} completion:^(BOOL finished) {
isShifted = finished;
}];
这里的想法是在触摸被按下时移动单元格。然后,如果选择了该单元格(没有发生滚动或取消事件),那么我将继续进行该单元格的另一个动画并过渡到新视图。
这里的问题在于动画将单元格放回到setHighlighted:NO
方法调用的原始位置。外观上看起来像是在单元格上进行了选择(向下移动),然后开始返回(系统删除了高亮显示),然后开始了转换(系统调用setSelected:YES
)。
据我对表格中单元格的选择所看到的,将发生以下情况:
setHighlighted:YES
setHighlighted:NO
setSelected:YES
是否有任何优雅的解决方案可以跳过呼叫2并避免后移动画,而无需引入将检查选择的计时器?
您可以考虑使用委托方法 tableView:shouldHighlightRowAtIndexPath:
- (BOOL)tableView:(UITableView *)tableView shouldHighlightRowAtIndexPath:(NSIndexPath *)indexPath {
// The cell has been touched, perform custom animation here
return NO;
}
setHighlight:
将永远不会在任何单元格上被调用,但是您仍然具有执行自定义动画的入口点。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句