呈现UIActivityViewController时隐藏的UIToolbar的UIBarButtonItems

时间:2012-10-15 07:20:12

标签: iphone ios uibarbuttonitem uitoolbar uiactivityviewcontroller

hiding buttons这对我来说似乎是一个错误,但也许有人可以想到一个解决方法?

基本上,如果您有自定义UIToolbar,则当您展示UIActivityViewController时,其按钮项会自动隐藏,并在您关闭时重新显示。这只是iPhone上的情况。由于UIActivityViewController不会隐藏整个屏幕,因此看起来很奇怪按钮会在灰暗的屏幕后面消失。

要复制,只需启动单个视图项目并在视图控制器上使用以下代码:

- (void)viewDidLoad {
    UIToolbar *toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, 40)];
    UIBarButtonItem *button = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action:@selector(didTapAction)];
    toolbar.items = [NSArray arrayWithObject:button];
    [self.view addSubview:toolbar];
}

- (void)didTapAction {
    NSArray *items = [NSArray arrayWithObjects:@"Text", nil];
    UIActivityViewController *sharing = [[UIActivityViewController alloc] initWithActivityItems:items applicationActivities:nil];
    [self presentViewController:sharing animated:YES completion:nil];
}

2 个答案:

答案 0 :(得分:0)

找到了解决方法。只需在展示之前摆脱所有项目,然后立即添加它们。

- (void)didTapAction {
    NSArray *items = [NSArray arrayWithObjects:@"Text", nil];
    UIActivityViewController *sharing = [[UIActivityViewController alloc] initWithActivityItems:items applicationActivities:nil];
    NSArray *barItems = toolbar.items;
    toolbar.items = nil;
    [self.navigationController presentViewController:sharing animated:YES completion:nil];
    toolbar.items = barItems;
}

答案 1 :(得分:0)

知道这是一个相当古老的线程,但是那些看这个页面寻求解决方案的人,请你走了:

使用iOS7,您可以使用此方法显示/隐藏工具栏按钮:

if(// your code Condition) 

{self.toolbarBtn1.enabled = YES;  self.toolbarBtn1.tintColor = nil; }  其他  {self.toolbarBtn1.enabled = NO; self.toolbarBtn1.tintColor = [UIColor clearColor]; }