1.确定 UIScrollView 对象的 contentSize 属性小于父视图
2.上面的语句不能放在 viewDidLoad() 方法当里
在 iOS 8 以上可以放在 viewDidAppear() 方法中。而在 iOS 7 ,可以参考iOS7 下 UIScrollView 无法滑动 中提到的方法,放在 viewDidLayoutSubviews() 方法中。
原理
iOS 的view加载过程会执行很多方法,当 view 加载完毕后,会先执行 viewDidLoad() 方法,然后在开启 Auto Layout 的情况下,会根据自动布局再一次计算 Constraint ,在计算完毕后会执行 viewDidLayoutSubviews() 方法。而最后才会执行 viewDidAppear() 方法。所以我们只要晚一些再设置,在 view 即将显示的时候设置 scrollView 的 contentSize 属性就可以了。
上面两点是排查问题的时候查到的资料,原地址
3.但是以上并没有解决我的问题,后来排查发现
UIPanGestureRecognizer *keyBoardMissTap = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(keyBoardMiss:)];
keyBoardMissTap.delegate = self;
[_backgroundView addGestureRecognizer:keyBoardMissTap];
我的scrollview上添加了pan手势,手势冲突引起的,(这手势原本作用是界面正在编辑的时候,滑动收起键盘,当时界面不需要scrollview滑动),现在为解决冲突去掉手势,代码这样处理
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{
if (![scrollView isKindOfClass:[UITextView class]]) {
[self.view endEditing:YES];
}
}
网友评论