点击事件为UIView,alpha设置转到基础按钮

时间:2018-04-21 04:30:57

标签: ios swift swift3

从服务器加载数据时,我们使用UIView来掩盖我们的UI,如下面的示例代码:

public static void main(String args){
    System.out.println("Print A");
}
public static void main(String [] args){
    System.out.println("Print B");
}
public static void main(int garbage){
    System.out.println("Print C");
}
public static void main(int i){
    System.out.println("Print D")
}

正如您所看到的,此loadingView占据控制器的整个宽度和高度,几乎掩盖了屏幕。拥有alpha意味着底层内容是半透明的。在数据加载后,我们从控制器中删除此视图:

let loadingView = UIView()
loadingView.tag = 9999
loadingView.frame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.size.width, height: UIScreen.main.bounds.size.height)
loadingView.backgroundColor = UIColor.white.withAlphaComponent(0.4);

controller.view.addSubview(loadingView)

然而,如果用户在显示loadingView时继续点击控制器上的UIButton,我们会看到奇怪的问题,在从控制器中删除loadingView之后,多次调用该按钮。换句话说,当你显示loadingView时,我们对UIButton tap的操作被调用了很多次。

我们做错了吗?我们怎样才能防止在显示loadingView时调用UIButton?

2 个答案:

答案 0 :(得分:0)

您应该在加载视图上进行用户交互。

loadingViee.userInteractionEnabled = false

如你所说,加载视图在整个屏幕上。

答案 1 :(得分:0)

您可以在加载视图中忽略屏幕触摸完成加载视图后,您可以继续进行交互,如下所示。

UIApplication.shared.beginIgnoringInteractionEvents()
UIApplication.shared.endIgnoringInteractionEvents()