自己做了一个九宫格,里面的图标都是由多张图片重叠构成,然后包装成一个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(@"双指双击");
}
}

最新文章

  1. x01.os.21: print "Loading..."
  2. RequireJS+JQueryMobile
  3. CentOS 7更换 安装源
  4. 2010 Asia Fuzhou Regional Contest
  5. Guava文档翻译之 Service
  6. SqlServer数据库的一些方法的用途
  7. 【开源java游戏框架libgdx专题】-03-项目开发与调试
  8. 【模拟】HDU 5762 Teacher Bo
  9. Android学习路径(十)怎么会Action Bar堆放在布局
  10. js 有关字符串的函数 以及一些和字符串有关的知识
  11. MySQL的索引创建、删除
  12. 机房收费系统——转换list泛型时,字段名称不正确应出现故障
  13. 用 PHP文件引入css样式
  14. 【JVM】问题排查
  15. Android手机camera和IMU的标定
  16. C#版微信公众号支付|微信H5支付|微信扫码支付问题汇总及解决方案总结
  17. 活字格Web应用平台学习笔记 6 - 使用公式
  18. verilog语法实例学习(3)
  19. Dubbo -- 系统学习 笔记 -- 示例 -- 结果缓存
  20. 谷歌推出新型强化学习框架Dopamine

热门文章

  1. Vue.js双向绑定的实现原理和模板引擎实现原理(##########################################)
  2. verify.js使用验证插件使用
  3. Atitit.提升软件稳定性---基于数据库实现的持久化 循环队列 环形队列
  4. atitit.添加win 系统服务 bat批处理程序服务的法总结instsrv srvany java linux
  5. forword/ sendRediect
  6. Maven之打包时配置文件替换
  7. 关于多线程与CRITICAL_SECTION的使用
  8. 在jsp中重复定义了两个相同id的标签导致的错误
  9. ArcGIS Flex API加载大量数据
  10. 关于启明星系统移除apppath配置,让系统自动获取路径来设置cookie的解决方法