0

我有以下问题,我开发了一个 ios 应用程序,简而言之,它有一个UIViewController作为父级,也有一个按钮,并且UIViewController弹出一个透明UIView的蒙版。当我单击UIView(恰好在底层按钮边界内)时,按钮无法接收任何事件(例如“ touch up inside"),按钮如何touch up inside"从透明的UIView上方获取”事件UIViewController

4

2 回答 2

1

这是不可能的,因为触发的事件不会针对按钮,因为按钮不可见(即另一个视图完全覆盖按钮并阻止与用户的交互)。但我可以给你解决办法。

1.在你的 UIViewController 中声明一个 Bool 变量 2.实现如下所示的 touches 方法

- (void)touchesBegin:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch=[touches anyObject];
    CGPoint p=[touch locationInView:self.view];

    if(CGRectContainsPoint(button.frame, p) && !boolVariable) {
    boolVariable = YES;
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch=[touches anyObject];
    CGPoint p=[touch locationInView:self.view];

//  If the below condition is true then it mean there the user tapped on the same location as that of button..(touchesEnded and touchesCanceled was not called) so the event is just like touchUpInside
    if(CGRectContainsPoint(button.frame, p) && boolVariable) {
      boolVariable = NO;
      [Here you can call the method which you wanted to call on touchUpInside of the button];
    }
}

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
boolVariable = NO;
}

- (void)touchesCanceled:(NSSet *)touches withEvent:(UIEvent *)event {
boolVariable = NO;
}

我无法在 Xcode 上测试可用的代码,但我认为它会起作用。注意:按钮的框架应该相对于 UIViewController。希望这可以帮助你:)

于 2013-09-22T17:22:52.213 回答
0

UIView实例,不要听触摸。为了获得诸如“touch up inside”之类的事件的回调,只发送到UIControl

最基本的具体子类是UIButton.

如果没有关于您的应用设置的代码或更多详细信息,很难提供更好的建议。

于 2013-09-22T16:44:10.010 回答