ISO给UIImageView增加点击事件
2024-10-11 18:04:32
自己做了一个九宫格,里面的图标都是由多张图片重叠构成,然后包装成一个button来使用;
遇到的问题是如何给这个“button”增加点击事件?
解决思路1:网友提示在该“button”上增加一个真正的透明button,这样就可以顺利执行点击事件了;但是本人尝试发现,如果我调整了button的透明度后,点击是没有效果的!可能是我操作错误,待再次验证。
解决思路2:为UIImageView增加手势
[ImageView addGestureRecognizer:我们自己的手势recognizer];
如何创建一个手势?看看UITapGestureRecognizer 的用法吧。
//单指单击 UITapGestureRecognizer *singleFingerOne = [[UITapGestureRecognizer alloc] initWithTarget:self
action:@selector(handleSingleFingerEvent:)];
singleFingerOne.numberOfTouchesRequired = 1; //手指数
singleFingerOne.numberOfTapsRequired = 1; //tap次数
singleFingerOne.delegate= self; //单指双击
UITapGestureRecognizer *singleFingerTwo = [[UITapGestureRecognizer alloc] initWithTarget:self
action:@selector(handleSingleFingerEvent:)];
singleFingerTwo.numberOfTouchesRequired = 1;
singleFingerTwo.numberOfTapsRequired = 2;
singleFingerTwo.delegate= self; //双指单击
UITapGestureRecognizer *doubleFingerOne = [[UITapGestureRecognizer alloc] initWithTarget:self
action:@selector(handleDoubleFingerEvent:)];
doubleFingerOne.numberOfTouchesRequired = 2;
doubleFingerOne.numberOfTapsRequired = 1;
doubleFingerOne.delegate= self; UITapGestureRecognizer *doubleFingerTwo = [[UITapGestureRecognizer alloc] initWithTarget:self
action:@selector(handleDoubleFingerEvent:)];
doubleFingerTwo.numberOfTouchesRequired = 2;
doubleFingerTwo.numberOfTapsRequired = 2;
doubleFingerTwo.delegate= self; //如果不加下面的话,当单指双击时,会先调用单指单击中的处理,再调用单指双击中的处理
[singleFingerOne requireGestureRecognizerToFail:singleFingerTwo];
//同理双指亦是如此
[doubleFingerOne requireGestureRecognizerToFail:doubleFingerTwo]; [self.view addGestureRecognizer:singleFingerOne];
[self.view addGestureRecognizer:singleFingerTwo];
[self.view addGestureRecognizer:doubleFingerOne];
[self.view addGestureRecognizer:doubleFingerTwo]; [singleFingerOne release];
[singleFingerTwo release];
[doubleFingerOne release];
[doubleFingerTwo release];
处理事件的方法,代码:
//处理单指事件
- (void)handleSingleFingerEvent:(UITapGestureRecognizer *)sender
{
if(sender.numberOfTapsRequired == 1) {
//单指单击
NSLog(@"单指单击");
}elseif(sender.numberOfTapsRequired == 2){
//单指双击
NSLog(@"单指双击");
}
}
//处理双指事件
- (void)handleDoubleFingerEvent:(UITapGestureRecognizer *)sender
{
if(sender.numberOfTapsRequired == 1) {
//双指单击
NSLog(@"双指单击");
}elseif(sender.numberOfTapsRequired == 2){
//双指双击
NSLog(@"双指双击");
}
}
最新文章
- x01.os.21: print ";Loading...";
- RequireJS+JQueryMobile
- CentOS 7更换 安装源
- 2010 Asia Fuzhou Regional Contest
- Guava文档翻译之 Service
- SqlServer数据库的一些方法的用途
- 【开源java游戏框架libgdx专题】-03-项目开发与调试
- 【模拟】HDU 5762 Teacher Bo
- Android学习路径(十)怎么会Action Bar堆放在布局
- js 有关字符串的函数 以及一些和字符串有关的知识
- MySQL的索引创建、删除
- 机房收费系统——转换list泛型时,字段名称不正确应出现故障
- 用 PHP文件引入css样式
- 【JVM】问题排查
- Android手机camera和IMU的标定
- C#版微信公众号支付|微信H5支付|微信扫码支付问题汇总及解决方案总结
- 活字格Web应用平台学习笔记 6 - 使用公式
- verilog语法实例学习(3)
- Dubbo -- 系统学习 笔记 -- 示例 -- 结果缓存
- 谷歌推出新型强化学习框架Dopamine
热门文章
- Vue.js双向绑定的实现原理和模板引擎实现原理(##########################################)
- verify.js使用验证插件使用
- Atitit.提升软件稳定性---基于数据库实现的持久化 循环队列 环形队列
- atitit.添加win 系统服务 bat批处理程序服务的法总结instsrv srvany java linux
- forword/ sendRediect
- Maven之打包时配置文件替换
- 关于多线程与CRITICAL_SECTION的使用
- 在jsp中重复定义了两个相同id的标签导致的错误
- ArcGIS Flex API加载大量数据
- 关于启明星系统移除apppath配置,让系统自动获取路径来设置cookie的解决方法