iOS为移动中的UIView(UIButton )添加点击事件

高高兴兴迎接新的产品新需求,满心欢喜的开始工作,结果研究了一下午才发现,是自己想的太简单了,是我太单纯呀。

  需求是这样的类似下雪的效果,随机产生一些小雪花,然后每个雪花可以点击到下个页面。

  接到需求之后我的首先想法就是用button实现不久可以了,多简单点事情,结果实践之后就知道自己多么的无知了,在移动中的button根本没有办法接收点击事件。

  然后同事给出了一种解决办法,通过手势获取点击的位置,然后遍历页面上的控件,如果在这个范围内就点击成功。通过这个想法我尝试用frame来实现需求,然后发现自己又白痴了,页面上所有的“雪花”的frame,都是动画结束的位置,并不是实时的位置。

  但是我感到用手势,然后通过位置,遍历,这个思路应该是对的,于是继续百度,发现了一个好东西

  - (CALayer *)hitTest:(CGPoint)p;

  通过这个可以得到这个页面时候覆盖了这个点,这样就可以解决我的问题了,把手势加在“雪花”的父页面上,然后点击事件里进行处理(当然 用这个方法就没有必要一定用button)


-(void)tapClick:(UITapGestureRecognizer *)tap

{

CGPoint clickPoint =  [tap locationInView:self];

for (UIImageView *imageView in [self subviews])

{

if ([imageView.layer.presentationLayer hitTest:clickPoint])

{

// This button was hit whilst moving - do something with it here

break;

}

}

}

}

  这样就可以解决问题,当然应该还有其他的方法,欢迎补充。

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-11-03 13:46:45

iOS为移动中的UIView(UIButton )添加点击事件的相关文章

疑问-IOS开发,cell中的UIView上添加的按钮不能响应事件

问题描述 IOS开发,cell中的UIView上添加的按钮不能响应事件 cell 里添加UIView,UIView上添加按钮,但是按钮不能响应点击时间,交互都打开了,怎么回事,求解.. 解决方案 可能是线程卡死,也可能是所有事件全部都集中在了UIView上无法分发时间,这里给你推荐一个博客http://blog.csdn.net/u013243469/article/details/41284027

Swift 2.1 为 UIView 添加点击事件和点击效果_IOS

前言 UIView 不像 UIButton 加了点击事件就会有点击效果,体验要差不少,这里分别通过自定义和扩展来实现类似 UIButton 的效果. 正文 一.为 UIView 添加点击事件 extension UIView { func addOnClickListener(target: AnyObject, action: Selector) { let gr = UITapGestureRecognizer(target: target, action: action) gr.numbe

【Swift 2.1】为 UIView 添加点击事件和点击效果

前言 UIView 不像 UIButton 加了点击事件就会有点击效果,体验要差不少,这里分别通过自定义和扩展来实现类似 UIButton 的效果.   声明  欢迎转载,但请保留文章原始出处:)  博客园:http://www.cnblogs.com 农民伯伯: http://over140.cnblogs.com   正文 一.为 UIView 添加点击事件 extension UIView { func addOnClickListener(target: AnyObject, actio

在extjs desktop中如何添加点击事件能让startmenu菜单项改变

问题描述 在extjs desktop中如何添加点击事件能让startmenu菜单项改变 在extjs desktop中如何添加点击事件能让startmenu菜单项列表改变成另一个菜单项列表

Android给TextView添加点击事件的实现方法_Android

首先设定TextView的clickable属性为true. 可以在布局文件中进行设定,比如: <TextView android:id="@+id/phone" android:clickable="true" --------->设定此属性 android:layout_marginLeft="10dp" android:layout_below="@id/address" android:layout_toR

PHP程序中,怎么插入JS点击事件

问题描述 PHP程序中,怎么插入JS点击事件 求高手解答.我需要做一个循环表格结构,大约是以下形式:foreach ( $result as $row ) { echo "" tr> td> input type='hidden' value='"".$rou['id'].""' /> /td>""; echo "" td>无关紧要内容 /td> /tr>"

android listview 为每个item上的按钮添加点击事件及处理问题

问题描述 大侠们 小弟初学android 有这样一个需求 我的一个listview的每一行(item)上都有一个button 需要为该button注册点击事件(已为该activity自定义adapter) 那么如何注册呢 现在我只能在自定义的adapter的getView()方法中为每个item注册点击事件了 可这只是在构造view的过程中注册 此时注册事件 视图没有构造完成 有些属性没法调用 比如 我要求在点击item上的button后产生一dialog(菜单)选择菜单后 刷新activity

Android给TextView添加点击事件的实现方法

首先设定TextView的clickable属性为true. 可以在布局文件中进行设定,比如: <TextView android:id="@+id/phone" android:clickable="true" --------->设定此属性 android:layout_marginLeft="10dp" android:layout_below="@id/address" android:layout_toR

jQuery中animate动画第二次点击事件没反应

  这篇文章主要介绍了jQuery中animate动画第二次点击事件没反应的解决方法,非常的实用,有需要的小伙伴可以参考下 用animate做点击翻页动画时发现第二次点击事件动画没反应,而第一次点击有动画效果,代码如下: 代码如下: $(".page").stop().animate({top:"-300px"}, 800, 'easeInOutExpo'); 第二次点击事件动画没反应的原因:top是page元素顶部相与其父元素顶部的距离,第一次点击后,page元素