事情是这样的。。。。
我一个工程里 一直使用的 masonry 做autolayout,有个gesturerReconizer的bug,找了很久,发现很奇怪一个现象:
我的某个view 是这样的
|--------------------------------------|
|UIViewController.view |
| |----------| |--------------------|
| |UIView1-| |UIScrollView |
| |----------| | |
| | |-------------| |
| | | UIView2 | |
| | |-------------| |
| |--------------------|
|------------------------------------------
UIScrollView 的 contentView 就略去了
按理说,我应该添加view2到 uiscrollview里,但是不小心写错了,加到了最外层的view里:
[self.view addSubview:self.view2];
然后添加了若干constraint
[self.view2 makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.orderSectionView.bottom).offset(14); make.height.equalTo(@200); make.left.and.right.equalTo(_rightDownScrollContentView); }];
关键是,一开始竟然一切顺利,跑成功了!!!!位置也对,就像我把它加入进了 scrollView里一样,还能顺着滑动!!
但是我用 原始的 addConstraint:xxx option 就会有很多unsatisfied constraint的msg产生。。。
但是这个view2的tap事件处理一直有问题。
两个理解:
1. 虽然view的层级不对,但是constaint是可以满足的,当scroll的时候,其依赖的view的位置变了,所以它跟着滑动
2.系统bug