gpt4 book ai didi

ios - hitTest:withEvent: 两次调用 sendActionsForControlEvents

转载 作者:行者123 更新时间:2023-11-29 02:58:05 27 4
gpt4 key购买 nike

我有一个简单的 UIButton 子类,我只想扩展按钮的触摸区域而不实际增加框架(这是因为我希望突出显示和选定的背景是原始框架的大小)。

这是我添加到 UIButton 子类中的内容:

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {

int errorMargin = 20;
CGRect largerFrame = CGRectMake(0 - (errorMargin / 2), 0 - (errorMargin / 2), self.frame.size.width + errorMargin, self.frame.size.height + errorMargin);

if ((CGRectContainsPoint(largerFrame, point)) == 1){

NSLog(@"Sending Action");
[self sendActionsForControlEvents:UIControlEventTouchUpInside];

return self;
}
else{
return nil;
}

}

这很好用;但是,它调用了两次所需的操作。因此,例如,“tab”按钮将被点击一次,但 tab 会被点​​击两次。

我发现了一些与 UIControl 和 beginTracking 方法相关的问题,但我无法让它与 UIButton 一起工作。

关于如何使用 UIButton 正确实现它的任何想法?谢谢!

最佳答案

通过为更大的区域返回 self,您可以欺骗 hitTest 逻辑,使它认为按钮比实际大。这应该会导致按钮触发操作,而无需在 hitTest 方法中调用 sendActionsForControlEvents

关于ios - hitTest:withEvent: 两次调用 sendActionsForControlEvents,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23645217/

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