让我们这次直接进入正题,有时候我们想做以下这种界面:

目前我就想到三种方案:

  1. 做一个tableview,然后组织cell的界面如上图所示
  2. 做一个button子类,使得button的界面能如上图所示
  3. 做两个view

可以看出,第一第二种方案相对来说要麻烦一些,但是好处还是比较明显的就是今后在这个界面上需要更多的功能时,可复用的界面元素更多。尤其是第一种,如果这些功能列表在整个屏幕内放不下时,还可以自动scroll。

但是第三种方案最大的好处就是简单,当我们需要快速出功能,而且暂时不需要考虑复用的时候,这种方案就体现出优势了。

我可耻地选择了第三种方案,然后问题来了。。。。因为我之前都习惯使用IBAction的方式来绑定事件,这次我也习惯性地这样做了,突然发现IBAction根本绑定不到UIView这样的元素上去!

这种时候又要请出万能的google然后引导到stackoverflow。。。。。。熟悉的味道

第一种方案

在view上绑定一个点击手势,代码如下:

  UITapGestureRecognizer *fun1TapGesture = [[UITapGestureRecognizer alloc]
initWithTarget:self
action:@selector(fun1:)];
[self.fun1View addGestureRecognizer:fun1TapGesture];

第二种方案(抱歉实在找不到原链接了)

这种方法个人感觉有点trick,假设选中了“功能一”这个view,然后在右边属性栏里如下选择,即把UIView改为UIControl:

然后就会发现IBAction能绑定了:

总结

如果你只是想能点击触发一些事件,那么第一种方案就非常方便。但是如果你想根据不同的点击事件做一些不同的事件(比如touch down的时候做一些界面的改变,touch up的时候再触发事件等),那么第二种方案就非常合适了。

iOS小技巧 - 如何使UIView可以绑定点击事件的更多相关文章

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

    高高兴兴迎接新的产品新需求,满心欢喜的开始工作,结果研究了一下午才发现,是自己想的太简单了,是我太单纯呀. 需求是这样的类似下雪的效果,随机产生一些小雪花,然后每个雪花可以点击到下个页面. 接到需求之 ...

  2. iOS开发小技巧 - label中的文字添加点击事件

    Label中的文字添加点击事件 GitHub地址:https://github.com/lyb5834/YBAttributeTextTapAction 以前老师讲过类似的功能,自己懒得回头看了,找了 ...

  3. iOS小技巧–用runtime 解决UIButton 重复点击问题

    什么是这个问题 我们的按钮是点击一次响应一次, 即使频繁的点击也不会出问题, 可是某些场景下还偏偏就是会出问题. 通常是如何解决 我们通常会在按钮点击的时候设置这个按钮不可点击. 等待0.xS的延时后 ...

  4. jQuery实现当按下回车键时绑定点击事件

    jQuery实现当按下回车键时绑定点击事件 <script> $(function(){ $(document).keydown(function(event){ if(event.key ...

  5. (转载)js(jquery)的on绑定点击事件执行两次的解决办法

    js(jquery)的on绑定点击事件执行两次的解决办法—不是事件绑定而是事件冒泡 遇到的问题:jquery中用.on()给页面中新加的元素添加点击事件时,点击事件源,绑定的事件执行两次,这里的ale ...

  6. 通过jQuery给<li>绑定点击事件

    背景:有个需求需要js中实现li标签的事件绑定,li通过在ajax请求中动态添加,按照常理,使用jQuery,可以使用以下方法绑定点击事件: $(function(){  commonAjaxCall ...

  7. a标签绑定点击事件失败

    如图 然后对a标签绑定点击事件  无效 换成span标签可以

  8. JQuery 动态加载 HTML 元素时绑定点击事件无效问题

    问题描述 假设项目中有一个列表页面,如下: 当点击列表一行数据可以显示详情页面,而详情页面的数据是根据当前行的数据作为参数,通过 ajax 请求到后台返回的数据,再根据返回的结果动态生成 html 页 ...

  9. iOS小技巧总结,绝对有你想要的

    原文链接 在这里总结一些iOS开发中的小技巧,能大大方便我们的开发,持续更新. UITableView的Group样式下顶部空白处理 //分组列表头部空白处理 UIView *view = [[UIV ...

随机推荐

  1. 【CF Edu 28 B. Math Show】

    time limit per test 1 second memory limit per test 256 megabytes input standard input output standar ...

  2. [学习笔记]Senparc.CO2NET 缓存使用笔记

    >笔记1:如果需要调用远程的Redis,那么您需要2步 步骤1: 在项目的web.config文件中配置 <!-- Cache.Redis连接配置 --> <add key=& ...

  3. libcurl网络连接使用tcp/ip

    CURL *curl; CURLcode res; const char *request = "GETas.xxxxE测试发送"; curl_socket_t sockfd; / ...

  4. python的request抓https的警告问题

    1.在使用requests前加入:requests.packages.urllib3.disable_warnings()2.为requests添加verify=False参数,比如:r = requ ...

  5. mdadm使用详解

    ★mdadm是multiple devices admin的简称,它是Linux下的一款标准的软件 RAID 管理工具,作者是Neil Brown 我们知道raidtools是Linux下一款经典的用 ...

  6. Java并发(3)- 聊聊Volatile

    引言 谈到volatile关键字,大多数开发者都有一定了解,可以说是开发者非常熟悉,深入之后又非常陌生的一个关键字.相当于轻量的synchronized,也叫轻量级锁,与synchronized相比性 ...

  7. 寻宝游戏(bzoj 3991)

    Description 小B最近正在玩一个寻宝游戏,这个游戏的地图中有N个村庄和N-1条道路,并且任何两个村庄之间有且仅有一条路径可达.游戏开始时,玩家可以任意选择一个村庄,瞬间转移到这个村庄,然后可 ...

  8. linux总结shell

    一.Shell脚本常用的头部格式: 头部的作用就是告知linux此脚本的类型: 常用的头部格式如下:(/bin/bash,是bash的路径,如果不知道路径可以通过which bash进行查看,其它命令 ...

  9. Android控件介绍

    1. 介绍 Android控件大多位于android.widget, android.view.View为他们的父类对于Dialog系列, android.app.Dialog为父类 Android的 ...

  10. 左侧菜单栏右侧内容(改进,有js效果)

    (如有错敬请指点,以下是我工作中遇到并且解决的问题)上一篇文章是简洁版 这是上一篇文章的改进. 上一篇文章的左侧菜单是没有子目录的. 这是效果图: 左侧菜单代码: <div class=&quo ...