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

Posted

技术标签:

【中文标题】当我更改 uiviews 子视图的状态时,我遇到了一个 uitoolbar 错误。【英文标题】:I got an uitoolbar bug when I change state of uiviews subviews. 【发布时间】:2013-10-01 15:21:34 【问题描述】:

基本思路,我需要在接收互联网数据时阻止用户交互。当我获得所有数据时,我需要取消阻止用户交互。取消阻止用户交互后,我的 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 项目没有任何接触。

【问题讨论】:

【参考方案1】:

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

【讨论】:

【参考方案2】:

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

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];

【讨论】:

以上是关于当我更改 uiviews 子视图的状态时,我遇到了一个 uitoolbar 错误。的主要内容,如果未能解决你的问题,请参考以下文章

在运行时和方向更改期间居中和 sizeToFit 子视图

如何在加载了 nib 文件的 UIView 中调整子视图的大小

IOS、UIView、检测子视图隐藏状态变化

更改父(UIView)大小时布局不更改

UIView 使用自定义属性有条件地为子视图设置动画

以编程方式更改子视图控制器