我有一个overlayView,它通常覆盖tableView的底部10%。
当我点击overlayView上的任意位置时,视图会向上滑动并覆盖50%的tableView。
在第二个(选定)状态,我希望能够通过触摸overlayView之外的tableView上的任何位置返回到第一个状态。
但是,我想要禁用在tableView上滚动(以及任何其他操作,例如选择一行),直到视图恢复到静止(底部10%)状态。
请忽略“编辑”和“添加”按钮,将其视为已禁用。
我该怎么做?
答案 0 :(得分:0)
您可以创建覆盖所有屏幕的叠加层,但其上部是透明的。然后在透明部分添加一个水龙头手势,将叠加层调整到原始位置。
答案 1 :(得分:0)
我仔细阅读了你的问题。我想告诉你,你可以使用bool来控制动画并检查叠加视图的状态。
步骤:
在您的类中将bool作为成员变量,默认情况下将其设置为false。
BOOL isOverlayViewAnimating = false;
在表格视图的委托方法中:
func tableView(UITableView,didSelectRowAt:IndexPath)
{
if(isOverlayViewAnimating == false)
{
//在这里做你的东西
}
}
由于表视图是uiscrollview的子类,您也可以实现该委托的方法,因此请根据需要在scrollview委托方法中检查bool。
最后开始动画集
isOverlayViewAnimating = true; UIView.animateWithDuration(0.2,动画: { //在此处设置您的观点位置。 }, 完成: { (价值:布尔) isOverlayViewAnimating = false; })
通过这种方式,您可以控制行为。
答案 2 :(得分:0)
你可以简单地做
1. Disable user interaction on table view
2. Start animating overlay view
3. Check for animation end,
4. When animation ends for overlay view, enable user interaction on table view.
答案 3 :(得分:0)
我的朋友Sandro Pennisi向我提供了Twitter的答案,我觉得这是最好的答案。
您基本上在主视图和叠加视图之间添加透明UIButton。它通常是残疾人;然后,当overlayView向上滑动时,你“启用”按钮并开始侦听触摸。当触摸击中它时,它会将overlayView向下移动到默认位置。