首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    iOS开发·runtime原理与实践: 关联对象篇(Associated Object)(应用场景:为分类添加“属性”,为UI控件关联事件Block体,为了不重复获得某种数据)

    方案就是为UITapGestureRecognizer追加一个“属性”,利用runtime新建一个UITapGestureRecognizer的分类即可。...[self requestCallConSetWithPartnerCode:tap.dataStr]; } 如此一来,响应事件的方法就可以根据事件激活方携带过来的信息进行下一步操作了,比如根据它携带过来的某个参数进行网络请求等等...3.2 UIButton 除了上述的UIAlertView,这节以UIButton为例,使用关联对象完成一个功能函数:为UIButton增加一个分类,定义一个方法,使用block去实现button的点击回调...typedef void(^ButtonClickCallBack)(UIButton *button); @interface UIButton (Handle) // 为UIButton增加的回调方法...判断是否存在关联对象,如果存在,直接返回 /** 1> 关联到的对象 2> 关联的属性 key 提示:在 OC 中,类本质上也是一个对象 */

    2.9K20

    IOS5开发-UIScrollView添加单击事件的方法

    但是这里注意一下 [self.nextResponder touchesEnded:touches withEvent:event];这句话的意思是将UIScrollView上的单击事件往下传递,传递到它的父...这样如果父UIView上实现了touchesEnded这个方法,也会响应到。但是这样的写法经过测试在IOS5.0以前的版本可以。但IOS5以后的(包括5)这不能往下传递,这里我也不知道为什么。... ended"); } -(void)scrollViewTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event whichView:(id)scrollView...{     NSLog(@"scrollView  touch ended");      } 功能完成,记得在ViewController.h上加上UIScrollViewTouchesDelegate...本来我想用UITapGestureRecognizer来实现的,但是直接引发异常。不明白为什么UITapGestureRecognizer不能注册在UIScrollViews上。

    1.9K70

    iOS小技能: 限制按钮的点击频率(Target-Action设计模式的运用)

    引言 在项目开发中,会对数据库数据进行更新操作的接口请求,不仅服务器侧需要控制请求频率以及保证数据的唯一性和一致性,app侧也需要进行限制来避免产生垃圾数据 常用的方案有: 限制按钮的点击频率: 针对注册类接口的时间间隔...SEL selA = @selector(sendAction:to:forEvent:); 如果按钮的事件处理采用添加UITapGestureRecognizer 手势的实现的,...同理也是可以类似地进行Method Swizzling实现响应频率的限制 UITapGestureRecognizer *cutTap = [[UITapGestureRecognizer...,你可以选择自定义控件的方式进行实现 头文件 #import #define defaultInterval .2 //默认时间间隔 @interface UIButton...resetState) withObject:nil afterDelay:self.timeInterval]; } } //此处 methodA和methodB方法IMP互换了,实际上执行

    87820

    奇怪的现象:touchesBegan: 与UITapGestureRecognizer手势没有人响应 以及set方法的妙用

    无奈,又尝试着在View视图上添加一个landBGView,来承载我想要显示的landKindView。 设置 landBGView 为控制器的View的尺寸,然会添加,到控制器的VIew上。...然后在landBGView上添加手势,但是仍旧是没有反应,郁闷至极。。。 今天再次尝试了一下,居然就可以了(可能是自己修改了某些东西)。...重写set方法来实现某些代码的简化, 主要是操作View的显示与隐藏(或者是刷新操作,网络请求之类的均可),主要是为了操作方便,集中处理细节问题 具体如下: //某按钮的 控制显示子View - (void...self.categoryIsShowing ; } // 重写set方法 - (void)setCategoryIsShowing:(BOOL)categoryIsShowing { if...UIColor lightGrayColor]; [self.landBGViewaddSubview:self.landKindView]; UITapGestureRecognizer

    60210

    iOS-QQ音乐播放器的简单实现

    - (IBAction)sliderClick:(UITapGestureRecognizer *)sender { // 1.获取点击到的点 CGPoint point = [sender...歌词的处理 创建存放歌词的tableView 当滑动歌手图片时,会来到歌词界面,这里往歌手图片和歌词label上面覆盖scrollView,设置scrollView的contentSize为两个屏幕的宽度...歌词tableView布局 使用storyboard添加scrollView并自定义scrollView为CLLrcView,使用代码添加tableView,在scrollView的initWithFrame...scrollView滑动歌手图片逐渐消失处理 当向右滑动出现歌词时,歌手图片和歌词label是逐渐消失的,我们通过scrollView的代理监听scrollView的滑动,根据scrollView.contentOffset.x...播放进度 = (当前播放的时间 - 正在唱的歌词的开始时间)/ 当前唱的歌词需要的总时间。

    2.9K131

    UIScrollView

    ScollView本身不处理这个消息,全部交给子视图处理 @property(nonatomic) BOOL canCancelContentTouches; //28.自定义默认行为,当手指触摸在显示的内容由子类重写...//35.一个布尔值,决定当当缩放超过上限或是下限时是否滚动视图推动内容缩放 @property(nonatomic) BOOL bouncesZoom; //36.一个布尔值 指示内容是否认为正在方法或者缩小...正在滚动的时候调用 - (void)scrollViewDidScroll:(UIScrollView *)scrollView; //43.scrollView正在被拖动的时候调用 - (void...UIControlEventTouchUpInside : 点击事件(UIButton) UIControlEventValueChanged : 值改变事件(UISwitch、UISegmentControl...:NSRunLoopCommonModes // 主线程不管在处理什么操作,都会抽时间处理NSTimer [[NSRunLoop mainRunLoop] addTimer:self.timer forMode

    1.8K60

    源码分析之SDWebImage(一)

    SDWebImage是iOS开发者最常用的第三方框架之一,用于异步下载网络图片,缓存图片,Github源码地址 一、架构 sd_setImageWithURL:UIimageView/UIButton...set Image:设置图片 二、解析 1、sd_setImageWithURL: UIButton和UIImageView都有WebCache的Category用来设置网络图片,以UIimageView...scrollview减速的时候,才会开始下载(也就是你滑动的时候scrollview不下载,你手从屏幕上移走,scrollview开始减速的时候才会开始下载图片 SDWebImageCacheMemoryOnly...,图片会更新时使用 SDWebImageContinueInBackground = 1 « 5,:启动后台下载,加入你进入一个页面,有一张图片正在下载这时候你让app进入后台,图片还是会继续下载(这个估计要开...2、sd_internalSetImageWithURL: 在这里,将UIButton和UIImageView的下载统一为UIView的WebCache Category 其中 dispatch_main_async_safe

    65920

    iOS-视频播放器的简单封装

    视频播放器布局 首先使用xib创建CLAVPlayerView继承UIView用来承载播放器,这样我们在外部使用的时候,直接在控制器View或者Cell上添加CLAVPlayerView即可,至于播放器播放或者暂停等操作交给...CLAVPlayerView上的,要注意他们的层次关系,避免相互遮挡。...工具条的显示与隐藏 在播放状态时,当点击imageView,就会弹出底部工具条,可以查看当前播放的时间,视频总时间或进行暂停视频、全屏播放等操作。如果没有操作,工具栏会在5秒之后自动隐藏。...按下时移除定时器,拖动时根据拖动的值即时的计算当前播放时间并显示在label上,松开时计算当前播放时间,并跳转到当前播放时间进行播放。...,因此我们提供urlString属性用来接收视频的资源,然后通过重写其set方法来播放视频 /** 需要播放的视频资源set方法 */ -(void)setUrlString:(NSString *)urlString

    1.9K110

    UIGestureRecognizer  手势识别一、概念介绍二、UIView 的分类三、UIGestureRecognizer 抽象类四、UIGestureRecognizerDelegate 代理

    一、概念介绍 UIGestureRecognizer是一个抽象类,定义了所有手势的基本行为,使用它的子类才能处理具体的手势 UITapGestureRecognizer(轻触,点按) UILongPressGestureRecognizer...NSUInteger)touchIndex inView:(nullable UIView*)view; ---- 四、UIGestureRecognizerDelegate 代理方法 处理一些同时进行的手势操作...和UIButton的点击事件冲突的解决办法 - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch...*tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapAction:)]; // 设置能识别到手势的最少的轻触次数...- (void)rotateAction:(UIRotationGestureRecognizer *)recognizer { // 在原来的基础上, 累加多少度 recognizer.view.transform

    3.1K81
    领券