今天在做側滑頁面時,發現頁面隨着滑動手勢而滑動,到臨界點時,如果再滑動會出現抖動現象.找到解決辦法是進入方法后先判斷一次,再判斷是在滑動范圍內讓頁面滑動.遂將滑動手勢(UIPanGestureRecognizer )注意事項總結了如下:
代碼:
- (void)panAction:(UIPanGestureRecognizer *)pan{
_canLeft = YES;
_canRight = YES;
//點相對於上一個點的位置
CGPoint moviePoint = [pan translationInView:pan.view];
//點的速度(正負可判斷滑動趨勢)
CGPoint velocity = [pan velocityInView:pan.view];
//側滑的范圍
CGFloat instance = kScreenWidth - 100;
//禁止左划的情況(在最左邊時)
if (pan.view.left <= 0 && moviePoint.x <= 0) {
_canLeft = NO;
}
//禁止右划得情況(在最右邊時)
if (pan.view.left >= instance && moviePoint.x >= 0) {
_canRight = NO;
}
//頁面可以滑動的條件
if (_canRight && _canLeft && pan.view.left >= 0 && pan.view.left <= instance){
//移動
pan.view.center =
CGPointMake(pan.view.center.x + moviePoint.x, pan.view.center.y);
}
//每次都需要復位
[pan setTranslation:CGPointZero inView:pan.view];
//松開手指時判斷滑動趨勢讓其歸位
if (pan.state == UIGestureRecognizerStateEnded) {
if (pan.view.left < 10) {
pan.view.left = 0;
}else if(pan.view.left > instance - 10){
pan.view.left = instance;
}
}
}