如何发大按钮的点击热区(可触范围)

Apple的iOS人机交互设计指南中指出,按钮点击热区应不小于44x44pt,否则这个按钮就会让用户觉得“很难用”,因为明明点击上去了,却没有任何响应

为了发大按钮的可触范围,需要重写UIButton的- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event;方法,改变按钮的可触范围。

1.使按钮的可触范围改变至44*44

- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event{
    CGRect bounds = self.bounds;
    CGFloat width = 44.0f - bounds.size.width;
    CGFloat height = 44.0f - bounds.size.height;
    bounds = CGRectInset(bounds, - 0.5 * width, - 0.5 * height);//改变bounds的范围
    return CGRectContainsPoint(bounds, point);//如果point 在 bounds 内,返回YES,否则返回NO
}

如何发大按钮的点击热区(可触范围)_第1张图片

2.使小于44*44的按钮的可触范围改变至44*44,大于的不改变

- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event{
    CGRect bounds = self.bounds;
    CGFloat width = MAX(44.0f - bounds.size.width, 0);
    CGFloat height = MAX(44.0f - bounds.size.height, 0);
    bounds = CGRectInset(bounds, - 0.5 * width, - 0.5 * height);//改变bounds的范围
    return CGRectContainsPoint(bounds, point);//如果point 在 bounds 内,返回YES,否则返回NO
}

如何发大按钮的点击热区(可触范围)_第2张图片

你可能感兴趣的:(代码)