对于我的应用程序的 iOS7 版本,我正在实现像这样的侧面菜单控制 - https://github.com/romaonthego/RESideMenu。这个实现是非常错误的,所以我决定自己从头开始重新实现它。我使用本教程http://www.doubleencore.com/2013/09/ios-7-custom-transitions/获取实用说明。示例代码效果很好。但在我的情况下,我需要从 UIViewController(通过按钮点击)转换到 UITableViewController,然后再选择任何表格视图单元格。
The issue is that when a cell in table view is selected and I'm dismissing presented view controller I got delay before actual animation.
//this cause animation with delay
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[self.presentingViewController dismissViewControllerAnimated:YES completion:NULL];
}
我注意到,如果在选择单元格后点击呈现的表格视图中的任何位置,动画就会执行。
我使用 gcd 添加了一些延迟并解决了这个问题:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
double delayInSeconds = 0.1;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
[self.presentingViewController dismissViewControllerAnimated:YES completion:NULL];
});
}
但它对我来说看起来很难看,而且我指出的教程中的示例代码也没有这种解决方法,所以我想知道我是否错过了什么以及为什么会发生这种情况。表视图选择设置为单选,表视图单元格选择样式设置为无。
也许我还应该注意到,我正在为 tableview 的高度添加一些约束以使其适合它的内容。但我认为,就我没有任何限制的情况而言,它不会导致这个问题。