UIScrollView滑动⼿势
最近因为项⽬需要,添加画笔功能 设计是仿的 的画笔 后⾯图⽚可缩放 移动 图⽚的移动是⽤2只⼿指以上触碰才可以移动。
刚开始使⽤UIscrollView 发现画笔与UIscrollView ⾃带的拖拽⼿势起了冲突 ,⾃⼰曾⽤⼿势来实现缩放但是效果觉得没有UIscrollView 的好 所以想着尝试⽤UIscrollView 然后想法去屏蔽UIScrollView的panGestureRecognizer,
⾃⼰曾⽤⼿势来实现缩放 但是效果觉得没有UIscrollView 的好 所以想着尝试⽤UIscrollView去屏蔽他的.
scrollView..panGestureRecognizer 是readOnly
看了好多⽂章 到解决⽅法 — 重写U Isc ro o View 的⼿势的代理⽅法
r o
⾸先建⼀个类继承⾃UIScrollView,
重写下⾯⽅法 让scrollView ⾃带的⼿势不可⽤
之后我这⾥是添加了⼀个需要两个⼿指才能滑动的⼿势 这样就不会跟我的画笔冲突了.下⾯摆上代码
@implementationLNFingerContainerScrollView
- (instancetype)init
{
self= [superinit];
if(self) {
[selfsetGesture];
}
returnself;
}
- (void)setGesture{view ui框架
_gesture=[[UIPanGestureRecognizeralloc]initWithTarget:selfaction:@selector(gestureAction:)];
_gesture.minimumNumberOfTouches= 2;
[selfaddGestureRecognizer:_gesture];
}
- (void)setFrame:(CGRect)frame{
[supersetFrame:frame];
[selfsetContentSize:CGSizeMake(frame.size.width, frame.size.height)]; }
- (void)setContentView:(UIView*)contentView{
_contentView= contentView;
[_contentViewremoveFromSuperview];
[_contentViewsetFrame:self.bounds];
[selfaddSubview:_contentView];
}
- (void)gestureAction:(UIPanGestureRecognizer*)sender{
CGPointpt = [sender translationInView:self];
CGPointoffset = tOffset;
CGFloatx = offset.x- pt.x;
CGFloaty = offset.y- pt.y;
if(x < 0) {
x= 0;
}elseif(x > tSize.width- self.frame.size.width) {
x = tSize.width- self.frame.size.width;
}
if(y < 0) {
y= 0;
}
if(y > tSize.height- self.frame.size.height) {
y =tSize.height- self.frame.size.height;
}
[selfsetContentOffset:CGPointMake(x, y)];
[sender setTranslation:CGPointMake(0, 0) inView:self];
}
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer*)gestureRecognizer{ if(gestureRecognizer == self.panGestureRecognizer) {
returnNO;
}
returnYES;
}
@end
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论