0

基本思想,我需要在接收互联网数据时阻止用户交互。当我获得所有数据时,我需要取消阻止用户交互。取消阻止用户交互后,我的 UIToolBar 项目没有任何接触。

我创建了一个简单的代码来演示这种行为。

首先我创建了 UISplitViewController。在 DetailsViewController 上,我添加了 UIToolBar 和一项。

细节视图控制器

- (void)viewDidLoad
{
  [super viewDidLoad];

  __block UIView *myView = self.view;
  dispatch_async(dispatch_get_main_queue(), ^{
    [AppDelegate setInteraction:NO onView:myView];
    [AppDelegate setInteraction:YES onView:myView];
 });
}

应用委托

+ (void)setInteraction:(BOOL)allow onView:(UIView *)aView {
 dispatch_async(dispatch_get_main_queue(), ^{
        [aView setUserInteractionEnabled:allow];
        for (UIView * v in [aView subviews]) {
            [self setInteraction:allow onView:v];
        }
 });
}

取消阻止用户交互后,我的 UIToolBar 项目没有任何接触。

4

2 回答 2

0

在 aView 的子视图中,可能是您的工具栏,但不是栏按钮。也许您可以添加一个清晰的背景蒙版视图来阻止交互并将其删除以允许用户再次交互。

于 2013-10-01T18:05:02.413 回答
0

调用模态视图时,我曾经发生过类似的事情。尝试在您的互联网代码之前存储工具栏项目并在之后恢复它们,如下所示:

NSArray *storeToolbarItems = self.toolbar.items;
self.toolbar.items = nil;

//Execute your code to disable/enable interaction and receive internet data
//Once you have re-enabled user interaction... 
[self.toolbar setItems:storeToolbarItems];
于 2013-10-01T18:30:20.967 回答