当用户向左或向右滑动时,我试图控制从屏幕一侧出来的UIView。由于我希望视图跟随用户的手指,我正在使用平移手势。
所有这些工作正常但是代码正在增长,因为我正在寻找滑动速度以及触摸结束或开始获取该信息。我之所以没有使用滑出式导航类型的设置,是因为这个视图必须是UIWindow的一部分,因此它位于我的UITabBar上,而不是它下面。
我遇到的问题是阻止视图移动到某一点。这是我试过的代码:
在平移手势方法中:
if (self.filterView.frame.origin.x <=36){
gesture.enabled = NO;
}
然而,正如代码所做的那样;它会禁用手势并向后滑动不再有效。我也尝试过这个:
if (self.filterView.frame.origin.x <=36){
return;
}
然而,这意味着当我向后滑动时,没有任何事情发生,因为此代码首先执行以检查位置。
if (self.filterView.frame.origin.x <=36){
self.filterView.frame = CGRectMake(37, 0, 300, 500);
return;
}
这是最接近的匹配 - 但是在重置视图时会出现错误 - 这是正确的,因为代码的作用是正确的。它效率不高,看起来不太好。
解决此问题的更好方法是什么?我只是想让self.filterView不再适合某一点。
答案 0 :(得分:0)
您想要检查视图是否已经过了点,就像您正在做的那样。然后你想手动保持它。
// this checks if the view's origin along the x-axis has gone less than or equal to 36.0f
if (CGRectGetMinX(self.filterView.frame) <= 36.0f)
{
CGRect currentFrame = self.filterView.frame;
currentFrame.x = 37.0f;
self.filterView.frame = currentFrame;
return;
}