我有这个问题,我在任何地方都找不到任何其他的提及.
基本上,如果我在UIScrollView中禁用弹跳(因此UITableView等派生也会受到影响),如果用户滚动到顶部,则可能会使滚动指示器卡住,然后,使用另一个手势,尝试使用快速滑动继续滚动.
一旦发生这种情况,滚动指示器将不会消失,除非用户再次滚动或点击滚动视图.最大的问题是scrollview会捕获那个tap,所以如果你试图点击表格单元格,第一次就不会发生任何事情.
我在我的设备和模拟器上只使用了一个准确的应用程序来测试它,它似乎只是UIScrollView的一般问题并禁用弹跳;然而,就像我说的,我在互联网上找不到任何其他提及.
这只是一个错误吗?这是预期的行为吗?难道我做错了什么?如果这是一个错误,那么有没有人知道解决方法或修复?
解决方法
您是否为滚动视图添加了点击手势,如果没有,请尝试添加它?
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(resignsKeyboard)]; [self.scrollView addGestureRecognizer:singleTap]; singleTap.numberOfTapsrequired = 1; singleTap.delegate = self;
在接口文件中添加委托UIGestureRecognizerDelegate,然后实现tap手势delgate方法
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceivetouch:(UITouch *)touch { if (self.scrollView.superview != nil) { if ([touch.view isKindOfClass:[UIButton class]]||[touch.view.superview.superview isKindOfClass:[UITableViewCell class]]||[touch.view.superview.superview.superview isKindOfClass:[UITableViewCell class]]||[touch.view.superview isKindOfClass:[UITableViewCell class]]) // we touched our control surface { return NO; // ignore the touch } } return YES; // handle the touch }
//要像退出键盘一样对滚动触摸执行其他操作,请根据需要使用
-(void) resignsKeyboard { [self.view endEditing:YES]; [self.scrollView setContentOffset:CGPointMake(0,0) animated:YES]; }