UIButton获取点击的坐标及高级操作

需求:对于一个按钮,存在4中状态:无响应状态;正常相应状态,默认状态;递增状态;递减状态。

按钮的4种状态

// 设置按钮处于那种状态,右上角显示什么图片、是否能点击
typedef NS_ENUM(NSInteger, TKHomeMenuBeanButtonClickType) {
    TKHomeMenuBeanButtonClickTypeCheck = -1,    // 显示对勾, 点击没反应
    TKHomeMenuBeanButtonClickTypeDefault = 0,   // 默认状态、无右上角图片
    TKHomeMenuBeanButtonClickTypeAdd = 1,       // 显示加号,
    TKHomeMenuBeanButtonClickTypeReduce = 2     // 显示减号
};
// 或者
typedef enum {
    TKHomeMenuBeanButtonClickTypeCheck = -1,    // 显示对勾, 点击没反应
    TKHomeMenuBeanButtonClickTypeDefault = 0,   // 默认状态、无右上角图片
    TKHomeMenuBeanButtonClickTypeAdd = 1,       // 显示加号,
    TKHomeMenuBeanButtonClickTypeReduce = 2     // 显示减号
} TKHomeMenuBeanButtonClickType;
...
 //专业解释:按钮绑定点击事件
[_menuButton addTarget:self action:@selector(menuButtonClick:event:) forControlEvents:UIControlEventTouchUpInside];
...

// 按钮添加target,即能传来了UIButton,也能传来**事件**
- (void)menuButtonClick:(TKHomeMenuButton *)sender event:(UIEvent *)event {
    
    if (sender.clickType==TKHomeMenuBeanButtonClickTypeCheck) {
    // 处于非响应状态
        return;
    }
    
    if (sender.clickType>=1) { // 添加、删除
      
       // 根据事件定位到点击位置
        UITouch *touch = [[event touchesForView:sender] anyObject];
        CGPoint point = [touch locationInView:sender];
        
        if (point.xsender.bounds.size.height/3*2) { // 点击位置不符合条件
            return;
        }
    }
    //相应各种点击
    if (_buttonClickBlock) { 
        _buttonClickBlock(self);
    }
}

你可能感兴趣的:(UIButton获取点击的坐标及高级操作)