Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/114.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios beginIgnoringInteractionEvents或userInteractionEnabled=否未按预期工作_Ios - Fatal编程技术网

Ios beginIgnoringInteractionEvents或userInteractionEnabled=否未按预期工作

Ios beginIgnoringInteractionEvents或userInteractionEnabled=否未按预期工作,ios,Ios,在显示带有进度指示器的覆盖视图时,我面临着一个非常奇怪的用户交互问题 在主视图上,我有上一个和下一个按钮,单击下一个按钮,我进行一个web服务调用,在此过程中,我显示一个带有进度指示器的覆盖视图,如下所示 [self createProgressViewWithMessage:@"Loading..."]; [self.view bringSubviewToFront:self.inProgressView]; [self.inProgressView becomeFir

在显示带有进度指示器的覆盖视图时,我面临着一个非常奇怪的用户交互问题

在主视图上,我有上一个和下一个按钮,单击下一个按钮,我进行一个web服务调用,在此过程中,我显示一个带有进度指示器的覆盖视图,如下所示

    [self createProgressViewWithMessage:@"Loading..."];
    [self.view bringSubviewToFront:self.inProgressView];
    [self.inProgressView becomeFirstResponder];
    [NSThread detachNewThreadSelector:@selector(search:) toTarget:self
                           withObject:info];
成功检索后,我将更新记录列表,并执行启用和禁用“上一步”和“下一步”按钮。显示覆盖视图时,单击“上一步”或“下一步”按钮,事件将排队并在web服务调用完成后被调用。为了避免这些排队问题,我尝试了多种方法,比如调用
[[UIApplication sharedApplication]beginIgnoringInteractionEvents]
创建进度视图并在web服务调用完成后调用
[[UIApplication sharedApplication]endIgnoringInteractionEvents]
之前,但在此之后仍会调用事件

当覆盖视图存在但仍然没有使用时,甚至尝试通过设置
userInteractionEnabled=NO
来创建主视图

尝试了所有可能的方法,但仍然没有用。不知道为什么在web服务调用完成后事件正在排队并被调用


有人能帮我解决这个问题吗?显示覆盖视图时,我不希望事件排队。我的意思是,当覆盖视图正在进行时,不应将事件传递到主视图上的“上一个”和“下一个”按钮。

您可以设置
userInteractionEnabled=NO
,但不能设置主视图 但是覆盖视图(覆盖视图必须覆盖按钮)
或者您可以禁用按钮,但不能设置主视图 但是覆盖视图(覆盖视图必须覆盖按钮)
或者,您可以只禁用按钮,这有点违反直觉,但实际上您希望覆盖层启用交互功能。在这种情况下,它将接收触摸事件,这些事件不会传递到按钮和下面的其他视图:

    // Stop interacting with buttons underneath while async operation in progress.
    myOverlayView.userInteractionEnabled = YES;

请看这个问题

这有点违反直觉,但实际上您希望您的覆盖启用交互功能。在这种情况下,它将接收触摸事件,这些事件不会传递到按钮和下面的其他视图:

    // Stop interacting with buttons underneath while async operation in progress.
    myOverlayView.userInteractionEnabled = YES;

查看此问题

我已尝试将overlay view userInteractionEnabled设置为否,甚至禁用了按钮。在我的web服务调用完成后,将触发这些事件。当web服务正在进行时,他们不会被解雇。一旦web服务调用完成,所有事件都将排队并被触发。那么问题可能不是按钮被触发。我需要查看有关按钮的更多代码如何执行web服务请求web服务调用完成后执行的操作我已尝试设置overlay view userInteractionEnabled=否甚至使按钮失效。在我的web服务调用完成后,将触发这些事件。当web服务正在进行时,他们不会被解雇。一旦web服务调用完成,所有事件都将排队并被触发。那么问题可能不是按钮被触发。我需要查看更多关于按钮的代码。如何执行web服务请求完成web服务调用后您将执行什么操作