当我改变uiviews子视图的状态时,我得到了一个uitoolbar错误。

时间:2013-10-01 15:21:34

标签: ios objective-c uiview uitoolbar

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

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

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

DetailViewController

- (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];
 });
}

的AppDelegate

+ (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项目没有任何接触。

2 个答案:

答案 0 :(得分:0)

aView的子视图中的

可能是您的工具栏,但不是条形按钮。 可能你只需添加一个清晰的背景掩码视图来阻止交互并将其删除以允许用户再次进行交互。

答案 1 :(得分: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];