UIscrollView加上手势

问题描述:

定义了一个UIscrollView:AScrollView,(控制该ScrollView横向滑动)

给该AScrollView加上滑动手势后,我想要的效果是,

纵向拖拽粉红色区域,会让绿框内的整个视图全屏显示,如图3;

横向拖拽粉红色区域,即滑动scrollView的正常效果,图1和图3互相切换

但是现在出了问题是,没添加手势之前,scrollView正常滑动切换视图,但是添加了手势后,只能上下拖拽,左右拖拽切换不起作用。

图1

图2

图3

解决方案:

//创建一个平移手势对象,该对象可以调用handelPan:方法

UIPanGestureRecognizer *panGesture =[[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handelPan:)];

panGesture.delegate = self;

[pageTabScrollview.tabScrollView addGestureRecognizer:panGesture];//给scrollView加上手势

实现手势响应函数

-(void)handelPan:(UIPanGestureRecognizer*)gestureRecognizer{

//获取平移手势对象在self.view的位置点,并将这个点作为self.aView的center,这样就实现了拖动的效果

CGPoint curPoint =[gestureRecognizer locationInView:self.view];

CGFloat translation_x = [gestureRecognizer translationInView:self.view].x;

CGFloat translation_y = [gestureRecognizer translationInView:self.view].y;

if(fabs(translation_x) >= fabs(translation_y))

{

return;//横向拖动

}

else

{

gestureRecognizer.enabled = YES;

}

if(gestureRecognizer.state == UIGestureRecognizerStateChanged)

{

if(pageTabScrollview.frame.origin.y >= 0 && pageTabScrollview.frame.origin.y <= self.view.frame.size.height)

{

[pageTabScrollview setFrame:CGRectMake(pageTabScrollview.frame.origin.x, curPoint.y, pageTabScrollview.frame.size.width, pageTabScrollview.frame.size.height)];

}

}

else if (gestureRecognizer.state == UIGestureRecognizerStateEnded)

{

if(pageTabScrollview.frame.origin.y <= self.view.frame.size.height/2)

{

pageTabScrollview.frame = CGRectMake(0,20, self.view.frame.size.width, pageTabScrollview.frame.size.height);

}

else

{

pageTabScrollview.frame = pageTabScrollViewOriginalRect;

}

}

}

重要的是一个方法,手势的回调方法

  1. 询问delegate,两个手势是否同时接收消息,返回同时同事接收。返回NO,不同时接收(如果另外一个手势返回YES,则并不能保证不同时接收消息)the default implementation returns NO。
  2. // 这个函数一般在一个手势接收者要阻止另外一个手势接收自己的消息的时候调用

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{

return YES;

}

这样,就能按理想的效果执行,上下拖动,view的frame发生变化,左右拖动,视图切换

UIscrollView加上手势,布布扣,bubuko.com

时间: 2024-10-11 10:27:44

UIscrollView加上手势的相关文章

UIScrollView添加手势显示和隐藏键盘

大概思路:本身textField点击键盘弹出,点击手势后自身view结束编辑,手势设为no,再点击textField时键盘弹出,这时用通知通知手势交互为yes即可 首先在.h文件中添加手势协议<UIGestureRecognizerDelegate> 在.m文件中声明一个手势指针 UITapGestureRecognizer * _gesture; _gesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@se

UIScrollView新手教程

在iOS开发中,滚动视图(UIScrollView)通常用于显示内容尺寸大于屏幕尺寸的视图.滚动视图有以下两个主要作用: 让用户可以通过拖拽手势来观看想看到的内容 让用户可以通过捏合手势来放大或缩小观看的内容 在iOS应用中常见的表格视图(UITableView)就继承自滚动视图,并因此可以通过上下滚动来显示更多的内容. 在本篇教程中,我们将讨论滚动视图的诸多方面内容,主要包括:使用纯代码和可视化编程两种方式来创建一个滚动视图.实现滚动和缩放功能,以及如何嵌套使用滚动视图. 继续阅读之前,请先下

互联网时代U盘化生存 5分钟演讲稿

在演讲之前先问大家个问题,先不要开始计时啊! (第一个,加上手势)有谁能说一下U盘的特点? (第二个,加上手势) 问一下有谁是自由职业者,或者在创业和单干? 好的,感谢各位朋友的精彩回答! 今天我的演讲题目是"互联网时代的U盘化生存方式": "U盘化生存"概括起来就是十六个字:"自带信息,不装系统,随时插拔,自由协作". 随着互联网的发展,人和人的协作变得更加自由,那么衡量一个节点价值的方式,就出现了非常重要的变化. 在北上广深这样的大城市,我们

高德地图聚合

使用git做版本控制 步骤如下: 下载,拖进来.a 拷贝算法文件 拷贝SDDemandListViewController 根据报错修改相应文件 添加方法 makeContent 添加属性@property (nonatomic, strong) NSNumber *category;           //任务分类 sven添加 拖进来图片资源搞定 ------------------------------------------------------------------------

基于目前十分流行的app的相关的总体布局归纳

下面是自己基于目前十分流行的app的相关的总体布局的归纳: 一.标签式导航:底部TAB式导航.顶部TAB式导航.底部TAB拓展式导航 1)         底部的TAB式导航(QQ.淘宝.微信.美团.京东) 这里的话是需要先了解拇指热区的定义:当在公交车上.走路的时候,单手去操作的场景.(这个定义深刻地影响着各种手机应用app的交互设计) 问题在于:随着手机屏幕越来越大,内容也是越来越多,单手的操作就变得更加的困难了,这也是为何导航设计成底部的TAB型的. 优点:这种设计从上图上面看,除了符合人

UITableView是不会响应touchesBegan:方法的

UITableView是不会响应touchesBegan:withEvent:之类的UIResponder的方法的.因此,加在其上的所有视图的响应者链就断了.如果在UITableView其上加任何的自身不具备类似UIButton一样有目标动作机制的UIView及其子类控件的时候,这个控件也不会响应touchesBegan:withEvent:方法.即便是设置该控件的userInteractionEnabled为YES也没用. 如此一来,如果想要这些控件具有交互性能怎么办?有一种很直观的方法,给这

边框侧滑返回!!!!!

前言:ios7开始 苹果增加了页面 右滑返回的效果:具体的是以UINavigationController为容器的ViewController间右滑切换页面.代码里的设置是: self.navigationController.interactivePopGestureRecognizer.enabled = YES;(default is YES) 可以看到苹果给navigationController添加了一个手势(具体为UIScreenEdgePanGestureRecognizer(边缘

手机卫士-03

手机卫士-03 课1 继续引导页第四个界面的实现 GuideActivity4.class的实现 给activity_guide4.xml的 checkBox加上id TextView也加上id(因为为了改变勾上后的text状态) activity_guide4.xml <TextView style="@style/textview_title_style" android:text="恭喜您设置完成" android:textColor="#E2

UIScrollView 手势缩放

一.缩放 1.简单说明: 有些时候,我们可能要对某些内容进行手势缩放,如下图所示 UIScrollView不仅能滚动显示大量内容,还能对其内容进行缩放处理.也就是说,要完成缩放功能的话,只需要将需要缩放的内容添加到UIScrollView中 2.缩放原理 当用户在UIScrollView身上使用捏合手势时,UIScrollView会给代理发送一条消息,询问代理究竟要缩放自己内部的哪一个子控件(哪一块内容) 当用户在UIScrollView身上使用捏合手势时,UIScrollView会调用代理的v