如何让view只响应一个按钮

自定义View实践 - 仿微信的滑动按钮 效果图 控件使用效果如下: 除了颜色,看起来和微信的还是挺像的。 准备 1、选择自定义View的方式 自定义View有3种途径实现:1、组合控件;2、继承现有控件(如Button);3、继承View。下面分别介绍一下: 1、组合控件:我们并不需要自己去绘制视图上显示的内容,而是将几个系统原生的控件组合到一起,这样创建出的控件就被称为组合控件,比如标题栏就是个很常见的组合控件。... 阅读详情
一些应用经常会在一个view上放多个按钮,比如登录页面,就会有注册与登录按钮。理论上讲注册和登录按钮是不能同时按下的,但是如果你同时按下这两个按钮,这两个东东都会显示响应高亮状态,其结果就不可预知了。这种情况经常会被测试童鞋当成bug如何让view只响应一个按钮 - 杨叫兽 - 青青子衿 悠悠我心。

其实UIView类属性有个exclusiveTouch属性,表示是否该view响应触摸是排他的。默认的设置是NO,即不排他。如果想让按钮排他响应,只需将按钮的exclusiveTouch设置为YES即可。

实际编程中我一般会在viewDidLoad方法中对self.view中的subview进行遍历,如果是按钮对象就将它的exclusiveTouch属性设为YES。

示例代码:

  for (UIView *subview in self.view.subviews) {         if ([subview isKindOfClass:[UIButton class]]) {             subview.exclusiveTouch = YES;         }     }


比如:

UINavigationBar左右两边按钮可同时点击的问题

这个问题是我们这边测试发现的。UINavigationBar左右两边的按钮竟然可以同时点击,他们可以连续响应。如果它们的操作是互斥的,如“发送”和“取消”,很可能因为没有做同时操作的处理,引起App异常。一个比较方便的解决办法就是设置button的exclusiveTouch属性设置为YES,这样只要此按钮排他性地接受的Touch事件。如果你的左右两边不是按钮,而是UIBarButtonItem,只能在代码逻辑上做一些容错处理了。


另外说明:手势识别会忽略exclusiveTouch设置。详见苹果官方例子: SimpleGestureRecognizers。
Android自定义View——从零开始实现可展开收起的水平菜单栏 在布局文件中使用效果如图。 阅读详情

相关推荐

招行收款通SM2加密解密全流程解析:PHP开发者必看

本文详细解析了招商银行收款通服务中SM2加密解密的完整流程,特别针对PHP开发者提供了从密钥管理到签名验签的实战指南。涵盖国密算法基础、PHP环境配置、密钥安全存储及生产环境优化方案,帮助开发者快速实现高安全性的支付系统集成。

weixin_30632089的博客 651

iview modal对话框取消默认按钮

在modal里面加上<div slot="footer"></div>即可 <Modal v-model="" title="" width="50%" :mask-closable="false" > <div slot="footer"></div> </...

qq_37496470的博客 2456

【KBrowser】基于 Kiwi/chromium 制作全新外壳,将 chromium 代码当作 webview 使用,实现可控核替换

chromium 其实只需几步巧妙的架构,就能拿来“换核”,甚至可以插件化,实现类似webview.apk 的效果。重新设计界面,不再是差不多的回声。而 Kiwi 基于 chrome 77 ,只有 50 MB。优势是兼容好、可安装扩展。

sinat_27171121的博客 2029

Android常用的物理按键及其触发事件

Activity和View都能接收触摸和按键,如果响应事件只需要在继承类里复写事件函数即可;当一个视图(如一个按钮)被触摸时,该对象上的 onTouchEvent() 方法会被调用。不过,为了侦听这个事件,你必须扩展这个类并重写该方法,当一些物理按钮被按下时会调用onKeyDown()方法;     常见的按键消息和触摸消息 [java] view plain copy

tanghongchang123的博客 8648

Python实战:动态爬取国家地表水水质实时监测数据(附最新代码解析)

本文详细介绍了使用Python动态爬取国家地表水水质实时监测数据的实战方法。针对动态网站数据加载特点,重点解析了如何利用Selenium模拟浏览器操作、结合BeautifulSoup解析数据,并提供了最新的代码实现与常见问题解决方案,帮助开发者高效获取环境监测数据。

app77的博客 280

MODBUS通讯不求人:手把手教你用三菱FX2N控制士林变频器

本文详细介绍了如何使用三菱FX2N PLC通过MODBUS协议控制士林变频器,涵盖硬件连接、参数配置、程序设计及通讯优化等关键步骤。特别针对没有内置MODBUS函数块的老款PLC,提供了CRC校验和稳定数据交换的实用解决方案,帮助工程师快速实现工业自动化设备的高效通讯。

v4w5x6的博客 226

ios开发,让界面只响应单个点击事件

一个界面上放两个按钮,同时点击这两个按钮,两个按钮的事件都会触发,这经常会导致一些不想看到的问题。通过设置 UIView 的exclusiveTouch为YES,可以解决这个问题。        exclusiveTouch 的意思是,让该view在响应一次点击事件时,具有排他性。默认是NO,将两个按钮的该属性都设置为yes之后,就不会出现两个按钮同时响应点击的问题了。        可以

柿子树 1103

Android16 RK3576修改亮度调节为线性调节

文章摘要: 本文分析了Android系统中亮度调节的非线性问题,并提供了线性化改造方案。首先通过追踪Settings和SystemUI代码,发现亮度调节使用了BrightnessUtils类中的非线性Gamma空间转换算法。然后重点修改了BrightnessUtils类,将原有的Hybrid Log Gamma(HLG)算法替换为简单的线性映射公式。最后在自定义工具窗口中实现了基于系统标准接口的亮度调节功能,通过SeekBar的0-100%百分比值线性映射到1-255的系统亮度值。改造后的亮度调节更加直观,

tzj1058756809的博客 76

如何为一个按钮(View)设置任意多次点击事件以及可以同时响应多个多次点击事件...

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33881041的博客 962

【NI Multisim 14.0原理图设计基础——元器件分类】

电阻(RESISTOR):该元器件栏中的电阻都是标称电阻,是根据真实电阻元器件而设计的,其电阻值不能改变。 排阻(RESISTOR PACK):相当于多个电阻并列封装在一个壳内,它们具有相同的阻值。 电位器(POTENTIOMETER):即可调电阻,可以通过键盘字母动态调节电阻,大写表示增加电阻值,小写表示减小电阻值,调节增量可以设置。 电容(CAPACITOR):所有电容都是无极性的,不能改变参数,没有考虑误差,也未考虑耐压大小。 电解电容器(CAP_ELECTROLIT):所有电容都是有极性的,“+”极

RL2698853114的博客 4万+

uniapp+renderJS+google map开发安卓版APP非小程序

uniapp+renderJS+google map开发安卓版APP非小程序,google map小叉号不显示,google map自定义marker右上角的小叉号如何去掉,uniapp+google map不显示

renkai721的专栏 667

自定义View 滑动按钮

自定义View实现开关按钮步骤:写个类继承View,拷贝包含包名的全路径到xml中,界面中找到该控件, 设置初始信息,根据需求绘制界面内容,响应用户的触摸事件,创建一个状态更新监听.显示开关背景和滑动按钮。重写Android绘制渲染函数onMeasure(),onLayout(),onDraw()可以跟随着触摸滑动,重写TouchEvent()返回true避免阻断其他事件。开关状态事件监听。定义内...

daimengs的博客 205

Unity Hololens2开发|(一)环境配置

开发过程中预览和调试应用:可以在电脑上的 Unity 编辑器中以播放模式本地运行应用,并将体验流式传输到 HoloLens2。将来自 HoloLens2 的输入(视线、手势、语音和空间映射)发送到电脑,在其中内容以虚拟沉浸式视图渲染。在HoloLens2设备中,打开Settings面板,依次选择Update & Security > For Developers,打开“Developer Mode”。在开发计算机中打开控制面板,依次选择“更新和安全> 开发者选项”,打开“开发人员模式”;

游戏开发小Y的博客 14万+

android 自定义开关键设置大小,Android自定义View实现开关按钮

前言:Android自定义View对于刚入门乃至工作几年的程序员来说都是非常恐惧的,但也是Android进阶学习的必经之路,平时项目中经常会有一些苛刻的需求,我们可以在GitHub上找到各种各样的效果,能用则用,不能用自己花功夫改改也能草草了事。不过随着工作经验和工作性质,越来越觉得自定义View是时候有必要自己花点功夫研究一下。一、经过这两天的努力,自己也尝试着写了一个Demo,效果很简单,就是...

weixin_32843345的博客 530

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Android按钮事件响应顺序

Android按钮事件响应顺序

archer的技术故事 2028

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

小程序web-view上覆盖其他组件

小程序web-view上添加按钮组件

qq_42502673的博客 3221

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Smart Client Software Factory View之间如何通信

有了前两篇关于事件如何发布,订阅,现在就有了做View之间通信的基础。下面做一个小例子,点左边View中的按钮,随机改变右边的View的背景色。如下图,我们在shell 工程下添加两个View,一个为LeftView,一个为RightView,添加时选择建立单独的文件夹。这个Shell里面有两个Workspace,一个LeftWorkspace,一个RightWorkspace,我现在把LeftV

lee576的专栏 2107

invoke 按钮点击_Android中使用OnClickListener接口实现按钮点击的低级失误

今天写了几行极为简单的代码,就是想implements View.OnCLickListener.然后实现按钮点击操作。但是按钮却没有反应,找了五分钟还是没有结果。以下是我的代码,希望大家不要嘲笑:XML布局如下:android:layout_width="match_parent"android:layout_height="match_parent">android:id="@+id/...

weixin_42626599的博客 343

仿 iPhone Assistivetouch 自定义view

基于公司项目要求,要彷照iPhone Assistivetouch 做一个浮动在窗口的按钮,且按钮有点击响应。    网上搜罗一遍,照葫芦画瓢的做了一个简单的demo。下面介绍一下我的思路: 1.要实现的功能:浮动在窗口最上层,支持手势滑动,点击响应。 2.实现过程:        a.首先罗列出自定义view的属性          public class FloatViewAtt

bear移动攻城狮的专栏 1571

android view禁用,Android开发教程之如何屏蔽View的重复点击

前言android 防止重复点击是一个非常常见的需求,每个人都有各自的点击事件的处理习惯,有的喜欢使用匿名内部类,有的activity、fragment、自定义View等继承点击事件然后在onClick()方法中根据id用switch实现各自View的点击事件。在开发中我们经常需要这样的需求,比如一个验证码发送按钮,我们只想让它响应500毫秒中的第一次点击事件,该如何处理呢?你可能会说这个简单,在...

weixin_39688451的博客 587

iphone4上界面不响应

我在scrollview中添加了一个长按手势会加载另一个view到scrollView上,然后再点击后加载的view移除,可是移除后 scrollView中的按钮都不响应事件了,这是咋回事? 在模拟器上运行是正常的。但在iphone4上就会出现上述问题。 各位,谁知道这是咋回事不?谢谢啦!

youfazha3582的博客 275

View的setTag() 和 getTag()

写一个自定义的Adapter用来绑定ListView,在重写getView的时候发现网上参考代码有用到setTag()和getTag()两个函数,百度找不到答案,google一搜就知道了,:P View中的setTag(Onbect)表示给View添加一个格外的数据,以后可以用getTag()将这个数据取出来。 可以用在多个Button添加一个监听器,每个Button都设置不同的set

肿菜的博客 358

sendMessage(View view)详解

一般我们都是在java代码里监听点击事件,然而我们也可直接通过 button的 android:onClick 属性来关联点击事件

amen的博客 1152
上一篇: addChildViewController的使用
下一篇: NSSet类型 以及与NSArray区别
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值