- 浏览: 361771 次
文章分类
最新评论
-
lord_is_layuping:
...
PYQT4 + Python2.6 + eric4-4.2.2a的安装全过程 -
597272095:
3Q
Oracle客户端PL/SQL 中文乱码解决 -
lpluck08:
如果不是在git本地版本目录中执行的话,会有问题。到本地版本目 ...
git 中文文件名 乱码 mac -
aiove:
-API
分享到: 阿撒旦发撒旦发速度飞洒发
iOS开发开源项目推荐 -
Wallian_hua:
感谢,楼主的详细分析,对我的启发很大。。我也正在研究这方面的技 ...
[ZT]简单OCR实现原理
http://blog.csdn.net/gavinming/article/details/6552565
最近看到有人问这个问题:在UIScrollView上添加了一个View,View上面有图片等元素,需要对单击和滑动事件进行区分。这样的问题有以下几个经常会用到的地方:
(1)点击UIScrollView上的图片,跳转到其他页面;同时不影响UIScrollView的滑动操作。
(2)在阅读浏览类产品会经常用到,点击屏幕的中间区域,隐藏/显示状态栏或导航条;同时不影响UIScrollView的滑动翻页操作。
有解决方法事在点击区域添加一个透明的Button,但个人感觉比较复杂,而且效果并不好。以下是我个人的解决方法:
首先了解下UIScrollView对于touch事件的接收处理原理:UIScrollView重载hitTest 方法,并总会返回itself 。所以所有的touch 事件都会进入到它自己里面去了。内部的touch事件检测到这个事件是不是和自己相关的,或者处理或者除递给内部的view。
为了检测touch是处理还是传递,UIScrollView当touch产生一个timer。
(1)如果150ms内touch未产生移动,它就把这个事件传递给内部view;
(2)如果150ms内touch产生移动,开始scrolling,不会传递给内部的view。(如当你touch一个table时候,直接scrolling,你touch的那行永远不会highlight。)
(3)如果150ms内touch未产生移动并且UIScrollView开始传递内部的view事件,但是移动足够远的话,且canCancelContentTouches = YES,UIScrollView会调用touchesCancelled方法,cancel掉内部view的事件响应,并开始scrolling。(如当你touch一个table, 停止了一会,然后开始scrolling,那一行就首先被highlight,但是随后就不在高亮了)
先前提到的在UIScrollView内部的view点击区域添加透明Button的解决方法,就是需要设置canCancelContentTouches = YES,而且还需重写UIScrollView的touchesShouldCancelInContentView:(UIView *)view方法,在view为UIButton的时候,返回YES。不然点击到button上的事件已经被button接收了,无法cancle掉。另外针对阅读浏览页面,一般手指都会停留在UIScrollView滚动,如果需要隐藏/显示状态栏或导航条,则会出现每点击一次就出现隐藏/显示问题。
解决方法:该问题主要的难题要判断单击事件。由于150ms很小,因此基本上手指一接触到UIScrollView就会传递到内部的view上,此时内部的view需对这个touch进行时间节点的判断,判断它是一个单击事件,然后执行单击操作。
1、TestView是ScrollView的subview,也可也是继承UIScrollView
TestView.h
- @interface TestView : UIView
- {
- UIImageView *imageView;
- NSTimeInterval touchTimer; //记录touch时间,来控制点击和滑动判断
- }
- @property(nonatomic, retain) UIImageView *imageView;
- @property(nonatomic, assign) NSTimeInterval touchTimer;
TestView.m
- @implementation TestView
- #pragma mark -
- #pragma mark Touch Method
- @synthesize imageView;
- @synthesize touchTimer;
- //thouchesBegan 获取到touch的时间点
- - (void)touchesBegan:(NSSet *)touches
- withEvent:(UIEvent *)event
- {
- UITouch *touch = [touches anyObject];
- self.touchTimer = [touch timestamp];
- }
- //touchesEnded,touch事件完成,根据此时时间点获取到touch事件的总时间,
- - (void)touchesEnded:(NSSet *)touches
- withEvent:(UIEvent *)event
- {
- UITouch *touch = [touches anyObject];
- self.touchTimer = [touch timestamp] - self.touchTimer;
- NSUInteger tapCount = [touch tapCount];
- CGPoint touchPoint = [touch locationInView:self];
- //判断单击事件,touch时间和touch的区域
- if (tapCount == 1 && self.touchTimer <= 3 && CGRectContainsPoint(self.imageView.frame, touchPoint))
- {
- //进行单击的跳转等事件
- }
- }
发表评论
-
[zt]iPhone开发中关于UIView Animation实现效果
2012-08-30 23:04 1358http://mobile.51cto.com/ipho ... -
Appletv3 到手试用 ,并推荐美剧一部
2012-06-04 21:20 2054一直也不知道 appletv 是干什么的,和同学聊起来,似乎他 ... -
mac 批量转换图片格式。
2012-02-05 11:42 1875mkdir jpegs; sips -s fo ... -
IOS 自带动画效果
2011-12-01 14:45 4043在ios view与view间切换的动画效果这篇文章中简单 ... -
[ZT]UITableView下拉刷新页面的实现
2011-12-01 14:02 2612UITableView下拉刷新页面的实现 以前 ... -
iOS的动画效果类型及实现方法
2011-12-01 14:00 4207iOS的动画效果类型及实现方法 ... -
[zt]UIImage图片的缩小与放大
2011-12-01 13:53 1490UIImage可以加载图片,但是我们想要得到一张缩小或放大 ... -
UIView内存释放问题
2011-12-01 11:30 1306UIView内存释放,之前一直以为把alloc的UIVie ... -
iphone中的UITouch
2011-08-31 00:56 2111手指在屏幕上能达到的精度和鼠标指针有很大的不同。当用户触击 ... -
[ZT]UIView的剖析!
2011-08-27 18:49 2629http://blog.csdn.net/mengtnt/ ... -
CGAffineTransform相关函数
2011-07-05 00:24 8664CGAffineTransform rotation = ... -
xcode crash 查找 EXC_BAD_ACCESS 问题根源的方法
2011-06-28 17:49 10189xcode4 4.x EXC_BAD_ACCESS ... -
How To Use the Three20 Photo Viewer
2011-06-23 02:13 1719How To Use the Three20 Photo ... -
iOS开发开源项目推荐
2011-06-10 21:02 23561 tbxml xml解析的类库,只支持解析,不支持写, ... -
在ios应用程序中按目录管理资源
2011-06-10 21:00 5179在ios应用程序中按目录管理资源 在ios的 ... -
UIScrollView分页的实现
2011-06-06 17:14 6103UIScrollView分页的实现 UIScro ... -
编写简单的翻页效果
2011-05-30 21:46 1870http://marshal.easymorse ... -
UIPopoverController
2011-05-21 21:43 17911、初始化UIPopoverController ... -
iphone debug
2011-05-21 01:50 1084在 .pch中加入 #ifndef __OPTI ... -
国际化Iphone的应用程序名称
2011-01-17 13:31 1619http://www.voland.com.cn/iphone ...
相关推荐
翻页过程中(scrollViewDidScroll),进行必要的即时更新,但这个更新操作必须尽量少,以免影响划动的平滑体验,如加载较小的缩略图。而在翻页后,再通过延时操作载入全部内容进行更新。这样处理后的体验就跟iOS设备...
这种设计保证了用户可以同时与`UIScrollView`的子视图交互,比如点击按钮或拖动其他可交互元素,而不会打断整体的滚动操作。 开发者还可以自定义`UIScrollView`的触摸行为,例如通过重写`touchesBegan:withEvent:`...
总之,实现iOS中的UIScrollView循环滑动涉及到对UIScrollView的工作机制的理解,以及对滚动事件的精确控制。通过复制并重新排列内容视图中的元素,我们可以创造出视觉上的无限循环效果,让用户体验到流畅的滑动浏览...
总的来说,利用`UIScrollView`及其子类`UITableView`和`UICollectionView`实现左右滑动的关键在于正确的设置`contentSize`和`pagingEnabled`属性,并适当地监听和响应滑动事件。通过这种方式,我们可以创建出丰富的...
3. 调整scrollView.delegate方法,监听滑动事件,实现自定义的行为,例如在滑动过程中更新其他界面元素。 最后,开发者可能会提供一些示例代码片段或教程,解释如何在实际项目中应用这些技巧。通过阅读和分析这些...
5. 这个方法告诉系统,当用户在UIScrollView上滑动时,侧滑返回手势应该等待直到UIScrollView的滑动手势失败。这样,只有当用户停止在UIScrollView上的滑动时,侧滑返回手势才会生效。 6. 为了确保与第三方库如...
在iOS开发中,特别是在设计复杂用户界面时,如个人主页、电商首页或淘宝/天猫店铺页,经常需要处理UIScrollView的嵌套滑动问题。当一个UIScrollView内嵌套另一个UIScrollView时,手势识别会变得复杂,可能导致手势...
在本教程中,我们将探讨如何实现一个`UIScrollView` 的左右循环滑动功能,同时具备自动轮播的效果。这个功能通常用于制作广告轮播、图片展示等场景。 首先,我们需要了解`UIScrollView`的基本属性和方法。`content...
GKPageScrollView是一个UIScrollview嵌套滑动库,主要参考了JXPagingView,在他的基础上做了修改,实现了自己想要的效果。支持上下滑动、左右滑动,手势返回等。支持如UITableView的sectionView的悬停效果。支持多种...
滑动翻页的核心原理是监听用户的触摸事件,根据用户的滑动方向和速度来判断是否进行翻页操作。在Android和iOS平台上,都有相应的API可以支持手势识别。例如,Android中的`GestureDetector`和`Scroller`类,iOS中的`...
一个利用UIScrollView结合UIPageControl的小...3、每个page页都可获取点击事件,以实现与主页面的互动。 如有疑问或其它技术相关需要请发送邮件至:haoxuliang@gmail.com 或者QQ:281574702 联系 ————郝旭亮
`UIScrollView` 内容区域可以比其实际显示区域大,用户可以通过滑动来查看超出可视范围的内容。为了实现无限循环,我们需要做的是在内容的开头和结尾添加重复的副本,这样当用户滚动到最后一项时,会无缝过渡到第一...
在实际应用中,我们经常需要实现类似轮播图或者商品展示的效果,这时就需要利用 `UIScrollView` 的分页循环滑动功能。同时,`UITableView` 作为另一种常见的滚动视图,虽然主要用于垂直方向的滚动,但有时也需要实现...
一个基于UIScrollView滑动分页效果类似于网易新闻效果但原理不一样,更简单一些,功能比较适合数据的分页展示,原理是设置UIScrollView的ContentSize根据滑动得到的index ContentOffset到不同的位置,demo非常简单...
在Android和iOS平台上,滑动翻页的实现方式有所不同,但核心思想都是捕捉用户的触摸事件,计算滑动距离,然后根据滑动方向和速度来切换图片或内容。 在Android中,实现滑动翻页的图片效果可以使用ViewPager组件。...
同时,Button的点击事件需要与ScrollView的滚动事件同步,以更新选中状态和红线位置。为了实现这些,开发者可能利用了Swift中的手势识别(Gesture Recognizer)、KVO(Key-Value Observing)或者其他监听方法。 ...
这个示例综合运用了`UIScrollView`的滚动逻辑、定时器、手势识别和页面控制,展示了如何创建一个具备定时滚动、循环滚动、点击事件以及页面指示功能的滚动视图。这种设计常见于很多移动应用的首页或广告展示区域,...
总之,实现`UIScrollView`的循环滑动需要对`UIScrollView`的属性和代理方法有深入的理解,同时需要巧妙地处理视图的布局、滚动事件和动画。这个过程中涉及到的知识点包括:视图层次结构、滚动视图机制、内容大小设定...
UIScrollView不能响应UITouch事件的解决办法,原因是:UIView的touch事件被UIScrollView捕获了。 解决办法:让UIScrollView将事件传递过去。于是最简单的解决办法就是加一个UIScrollView的category。这样每个用到...
在iOS开发中,`UIScrollView` 是一个非常重要的控件,它允许用户通过滑动来查看超过屏幕大小的内容。在很多应用场景中,如新闻列表、图片轮播等,我们需要实现一个循环滚动的效果,使得内容看起来是无限循环的。本文...