[英]Click through UIButton - ios
我有两个UIButtons一个在另一个之上。 第一个具有实现视觉反馈的自定义类,另一个按钮具有调用函数的onClick事件方法。
如何获得第一个按钮下的第二个按钮的onClick事件?
我需要有两个按钮,以便可以自定义触摸区域和视觉反馈的大小。
建议不要以UIButton
子类化开头:)如果需要视觉反馈效果,则可以具有UIView
并添加tapGesture
识别器。 在检测到水龙头时,您可以
迅速
let touchPoint = tapGestureRecognizer.location(in: your_view)
if your_inner_button.frame.contains(touchPoint) {
your_inner_button.sendActions(for: .touchUpInside)
}
目标C
CGPoint point = [self.tapGesture locationInView:self];
if (CGRectContainsPoint(self.frame, point)) {
[self sendActionsForControlEvents:UIControlEventTouchUpInside];
}
上面的按钮没有多大意义,因为如果您已经检测到敲击并发现触摸在您的需求范围之内,您为什么还要触发按钮单击,请直接调用performSelector
这样您就不需要按钮了。一个视图,而您只需要一个View
只是为了澄清您可以做自己想做的事情,
如果由于某些未知原因而无法执行此操作,并且您被迫(在枪口处,我想是:P)被迫使用彼此顶部的两个按钮,则始终可以使用hitTest
触摸切换到下面的按钮
迅速
class MyButton: UIButton {
override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
if your_inner_button.frame.contains(point) {
return your_inner_button
}
return nil
}
}
目标C
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
if (CGRectContainsPoint(your_inner_button.frame, point)) {
return your_inner_button
}
return nil;
}
为此,您必须将下面的按钮引用传递给顶部按钮,这应该不成问题,因为无论如何您都具有顶部按钮的子类:)该代码有味道吗? 对我来说,但这会满足您的需求吗? 是的,它确实 :)
希望能帮助到你
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.