gpt4 book ai didi

iPhone:覆盖 UIButton buttonWithType 返回子类

转载 作者:行者123 更新时间:2023-12-03 18:30:55 26 4
gpt4 key购买 nike

我希望能够创建一个具有超大响应区域的 UIButton。我知道实现此目的的一种方法是重写子类中的 hitTest 方法,但是如何首先实例化我的自定义按钮对象?

[OversizedButton buttonWithType: UIButtonTypeDetailDisclosure];

不能开箱即用,因为buttonWithType返回一个UIButton,而不是一个OversizedButton。

所以看来我也需要重写buttonWithType方法。有谁知道该怎么做吗?

@implementation OversizedButton

+ (id)buttonWithType:(UIButtonType)buttonType
{
// Construct and return an OversizedButton rather than a UIButton
// Needs to handle special types such as UIButtonTypeDetailDisclosure
// I NEED TO KNOW HOW TO DO THIS PART
}

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
// Return results if touch event was in oversized region
// I ALREADY KNOW HOW TO DO THIS PART
}

@end

或者,也许我可以使用 alloc/initWithFrame 创建按钮。但是buttonType属性是只读的,那么如何创建自定义按钮类型呢?

注意:我知道还有其他方法可以做到这一点,例如在可见按钮后面放置一个不可见按钮。我不喜欢这种方法并且宁愿避免它。对上述方法的任何帮助都会非常有帮助。谢谢

最佳答案

UIButton buttonWithType: 返回一个 UIButtonUIRoundedRectButton,具体取决于 type 参数的值。

由于 UIButton 没有提供 initWithType: 方法,我相信尝试覆盖 buttonWithType: 是危险的。

我建议您改为子类化UIControl。然后,您可以将按钮作为 subview 添加到控件中,并拦截 hitTest:withEvent:

关于iPhone:覆盖 UIButton buttonWithType 返回子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2562713/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com