自定义Button,并实现禁止快速点击

一、一般在开发工程中,我们都会要求处理快速多次点击按钮的操作 ,实际上只能点击一次 ,但是不能自我想象,所有的用户都会

按照自己的想法去操作一个功能,所以我们要禁止按钮的快速多次点击

二、实现方法

  思路一:实现方法很简单,就是在点击button的时候,把btn的enable属性设置为NO,然后再调用

performSelector: withObject: afterDelay: 这个方法去讲btn 的状态激活,这样就要求每一个用到按钮的地方都要这么做,非常繁琐

  思路二:定义一个通用的btn的基类,然后检测自身,在什么时候会被点击,然后再做修改,但是这样就由涉及到一个问题 ,怎么监测自身在什么时候被点击了--不方便

  思路三:自定义一个继承自UIButton的类、然后重写父类的方法、尝试了一下,可行,使用非常方便,重写的方法是

- (void)sendAction:(SEL)action to:(id)target forEvent:(UIEvent *)event

见效果图

贴出代码共参考

//
//  CommonButton.h
//  CommonButton
//
//  Created by pk on 14/12/24.
//  Copyright (c) 2014年 pk. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface CommonButton : UIButton

@end
//
//  CommonButton.m
//  CommonButton
//
//  Created by pk on 14/12/24.
//  Copyright (c) 2014年 pk. All rights reserved.
//

#import "CommonButton.h"

@implementation CommonButton

/*
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect {
    // Drawing code
}
*/

- (void)sendAction:(SEL)action to:(id)target forEvent:(UIEvent *)event
{
    [super sendAction:action to:target forEvent:event];
    self.enabled = NO;
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        self.enabled = YES;
    });
}

@end

是不是很方便

时间: 2024-10-18 15:37:39

自定义Button,并实现禁止快速点击的相关文章

自定义button的点击区域

某些情况下我们需要按钮有不规则的形状,在这些形状内点击才有响应,例如下面的图片中: 图片中红线圈出的两处都是用按钮做的,按钮的实际布置是上面第二张图所画的那样,所有按钮都是矩形的,但是中间的按钮和一圈的转盘形状都不可能用矩形,否则点击的时候难免相互影响. 那么如何自定义按钮点击的有效区域呢,其实很简单,只要重写一个函数即可: - (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event 系统发生触摸事件的时候会从window到父控件到

Firemonkey 自定义Button的Style

这篇文章模仿HTML中基于CSS的Button,通过Style实现自定义样式的Button. 前言 主要模仿的CSS代码如下: CSS Code 123456789101112131415161718192021222324252627   a.button{    text-align:center;    display:block;    width:50px;    color:#fff;    text-decoration:none;    font-weight:700;    l

iOS_Swift初识之使用三种回调方式自定义Button

最近在学习Swift ,发现青玉伏案大神早期用OC写的一篇博客--IOS开发之自定义Button(集成三种回调模式)  很适合用来熟悉Swift的回调方式,于是我就用Swift翻版了一下,具体实现原理就不多说了,主要贴上Swift的代码给大家看看.由于刚开始了解Swift,有使用不恰当的地方请轻拍.... 上代码: 1.新建一个xib,拖一个UIView到界面上,绑定上自定义的UIView类,拖一个UILabel到view上,写上Button假装是个UIButton:并将label拖到代码当中

IOS开发之自定义Button(集成三种回调模式)

前面在做东西的时候都用到了storyboard,在今天的代码中就纯手写代码自己用封装个Button.这个Button继承于UIView类,在封装的时候用上啦OC中的三种回调模式:目标动作回调,委托回调,Block回调.具体的内容请参考之前的博客:“Objective-C中的Block回调模式”,“Target-Action回调模式”,“Objective-C中的委托(代理)模式”.在接下来要封装的button中将要用到上面的知识点.之前在做新浪微博中的Cell的时候用到了Block回调来确定是那

android中样式和自定义button样式

1)自定义button样式 一.采用图片方式 首先新建Android XML文件,类型选Drawable,根结点选selector,自定义一个文件名. 随后,开发环境自动在新建的文件里加了selector结点,我们只需要在selector结点里写上三种状态时显示的背景图片(按下.获取焦点,正常)即可.具体如下: <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="

Android自定义Button背景色,弧度

Android自定义Button背景色,弧度 作为selector放在drawable中 android:state_pressed="true" 点击 android:state_focused="true" 聚焦 自定义的Button的xml文件(res/drawable/button_selector.xml) <?xml version="1.0" encoding="utf-8"?> <select

cocos2d-x自定义Button

cocos2d-x中封装CCMenuItem等相关按钮,但是有些时候需要自己封装按钮,这样能够更加灵活的实现对应功能. 自定义Button,需要重写OnEnter()和onExit()函数,并在对应函数中添加注册和取消注册. BaseButton.h内容 1 #ifndef BaseButton_H_H 2 #define BaseButton_H_H 3 4 #include "cocos2d.h" 5 using namespace cocos2d; 6 7 typedef SEL

自定义button

1.何为自定义button? 顾名思义会想到DIY,自然是系统提供的button不能够满足我的需求就需要自己DIY一个适用的button: 比如我项目中遇到的需求: (这种图片在上文字在下的,系统自然不能满足,这就需要自己写一个button) 2.自定义button的思路? 根据需求,不同之处在于button中的image和title位置的变化:所以需要重写UIButton: 首先需要重写两个方法: -(instancetype)initWithCoder:(NSCoder *)aDecoder

button设为UICustomType后点击无高亮效果

今天在cell上加了一个button,设了image secondButton.buttonType = UIButtonTypeCustom; [secondButton setImage:image_2 forState:UIControlStateNormal]; 但是点击上去无高亮效果,经查找 发现两个问题 1.应该设backGroundImage [secondButton setBackgroundImage:image_2 forState:UIControlStateNormal