我有一个非常复杂的应用程序,具有很多堆叠 View ,其中包含许多按钮,绘图区域和其他自定义触摸处理。我正在显示一个可拖动的帮助程序 View ,该 View 可以位于所有其他 View 之上。如果用户在助手 View 之外的任何位置点击,则需要关闭此 View 。我尝试使用多个UIWindows并将Gesture识别器添加到UIWindow中。

最佳答案

一个简单的方法是添加一个透明按钮,其边界等于 super View 的边界。然后, super View 将透明按钮插入到助手 View 下方。

透明按钮添加了一个单击事件,该事件可以关闭帮助程序 View 及其自身的透明按钮。

例如 :

UIButton *transparencyButton = [[UIButton alloc] initWithFrame:superview.bounds];
transparencyButton.backgroundColor = [UIColor clearColor];
[superview insertSubview:transparencyButton belowSubview:helperView];
[transparencyButton addTarget:self action:@selector(dismissHelper:) forControlEvents:UIControlEventTouchUpInside];

dismissHelper:方法可以做到这一点:
- (void)dismissHelper:(UIButton *)sender
{
    [helperView dismiss];
    sender.hidden = YES;
    // or [sender removeFromSuperview]
}

关于ios - 当用户点击 View 外部的任何位置时,关闭 View ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16034975/

10-12 04:21