补充: 按钮的知识点

1. 按钮的状态

  • 1.UIControlStateNormal

    • 除开UIControlStateHighlighted、UIControlStateDisabled、UIControlStateSelected以外的其他情况,都是normal状态
    • 这种状态下的按钮【可以】接收点击事件
    • 如果前后连着设置按钮同时处于多种状态, 则表现出来的也是 normal 状态, 除去如果有 设置为 enabled = NO; 则会进入UIControlStateDisabled状态(包括颜色), 不能点击
    //下面两种杂交在一起(就不是 normal 后面三种 ), 会显示为 Normal 状态的颜色, 但是 设置了 Enabled == NO,  所以这里也是不能点击的,
    self.button.selected = YES;
    self.button.enabled = NO;
    
  • 2.UIControlStateHighlighted
    • 【当按住按钮不松开】或者【highlighted = YES】时就能达到这种状态
    • 这种状态下的按钮【可以】接收点击事件
  • 3.UIControlStateDisabled
    • 【button.enabled = NO】时就能达到这种状态
    • 这种状态下的按钮【无法】接收点击事件
  • 4.UIControlStateSelected
    • 【button.selected = YES】时就能达到这种状态
    • 这种状态下的按钮【可以】接收点击事件

2. 让按钮无法点击的2种方法

  • button.enabled = NO;
    • 【会】进入UIControlStateDisabled状态
  • button.userInteractionEnabled = NO;
    • 【不会】进入UIControlStateDisabled状态,继续保持当前状态

3. 重写按钮的某个状态属性的 setter 方法和 getter 方法

  • 如: 重写按钮高亮get方法, 如果返回值是 yes , 则永远返回的是高亮状态, 如果返回值是 NO 则永远返回的是非高亮

    - (BOOL)isHighlighted{
        return NO;
    }
    
  • 重写按钮高亮 set 方法, 如果没有实现内部属性赋值(属性是父类定义的, 要调用父类的方法赋值), 则不会出现高亮状态

    • 如果给内部属性赋值为 Yes , 则会一直为 YES状态, 如果赋值为 NO, 则一直未 NO 状态
    - (void)setHighlighted:(BOOL)highlighted{
        [super setHighlighted:highlighted];
    }
    

results matching ""

    No results matching ""