从服务器加载数据时,我们使用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?
答案 0 :(得分:0)
您应该在加载视图上进行用户交互。
loadingViee.userInteractionEnabled = false
如你所说,加载视图在整个屏幕上。
答案 1 :(得分:0)
您可以在加载视图中忽略屏幕触摸完成加载视图后,您可以继续进行交互,如下所示。
UIApplication.shared.beginIgnoringInteractionEvents()
UIApplication.shared.endIgnoringInteractionEvents()