1

hiding buttons这看起来像一个bug,但也许有人可以想到一个解决方法?UIBoolButtonItems UIToolbar隐藏时呈现UIActivityViewController

基本上如果你有一个自定义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]; 
} 
+0

你需要把你的Button作为一个全局,当你展现UIActivityViewController时,你只需隐藏button.hidden = True,然后在解除时然后button.hidden = False –

+0

我不想隐藏按钮,它会自动隐藏他们作为显示UIActivityViewController的副作用。我不希望他们藏起来。 – dizy

+0

试试这个链接可能会帮助您... 1. http://stackoverflow.com/questions/2971483/hide-uitoolbar-uibarbuttonitems 2. http://stackoverflow.com/questions/276861/how-can-i -dynamic-hide-a-button-a-a-view-3. https://developer.apple.com/library/ios/#documentation/uikit/reference/UIToolbar_Class/Reference/Reference.html –

回答

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; 
} 
+0

我知道这是一个旧的答案,但我只是想感谢你这个简单的小黑客。多奇怪的问题.... – JiuJitsuCoder

0

知道这是很老线程,但那些谁看这个网页的解决方案,在这里你去:

随着iOS7,您可以用这种方式来显示/隐藏工具栏按钮:

if(// your code Condition) 

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