gpt4 book ai didi

ios - UISplitviewController 和不同的 UIKeyCommands 取决于主控、细节或两者都在屏幕上

转载 作者:行者123 更新时间:2023-11-29 11:57:11 26 4
gpt4 key购买 nike

我想在我的应用程序中包含一些 UIKeyCommands。我的应用程序包含一个 UISplitViewController,它强制 master 在 iPad 全屏上始终可见。在较小的屏幕上,它像往常一样工作。

现在,我已经在 MasterViewControllerDetailViewController 中实现了一些 UIKeyCommands。但是,该应用程序只会显示 DetailViewController 中的那些。所以我将所有这些都放在 RootSplitViewController 中,但这会显示所有这些,即使 MasterViewController 隐藏在 iOS 9 的 splitview 中也是如此。

不过,我想要的是当应用程序在 iPad 上全屏时显示所有内容,因此 MasterViewControllerDetailViewController 一起强制显示在屏幕上。当 View 很小(即 50-50)并且 MasterViewController 被隐藏时,我希望它只显示屏幕上的窗口。

关于如何实现这一点有什么想法吗?

最佳答案

最后我设法做到了 - 尽管是以一种不太漂亮的方式。

UIKeyCommands 被添加到 RootSplitViewController

- (NSArray *)keyCommands {
if (self.view.traitCollection.horizontalSizeClass == UIUserInterfaceSizeClassRegular) {
return @[
[UIKeyCommand keyCommandWithInput:@"r" modifierFlags:UIKeyModifierCommand action:@selector(changeRestaurant:) discoverabilityTitle:@"Change restaurant"],
[UIKeyCommand keyCommandWithInput:@"t" modifierFlags:UIKeyModifierCommand action:@selector(changeTable:) discoverabilityTitle:@"Change table"]
];
} else {
if (self.masterIsVisible == YES) {
return @[
[UIKeyCommand keyCommandWithInput:@"t" modifierFlags:UIKeyModifierCommand action:@selector(changeRestaurant:) discoverabilityTitle:@"Change restaurant"]
];
} else {
return @[
[UIKeyCommand keyCommandWithInput:@"t" modifierFlags:UIKeyModifierCommand action:@selector(changeTable:) discoverabilityTitle:@"Change table"]
];
}
}
}

这些方法调用特定 UIViewController 中的实际方法。

- (void)changeRestaurant:(id)sender {
UINavigationController *nav = (UINavigationController *)[self.viewControllers objectAtIndex:0];
RestaurantController *master = [nav.viewControllers objectAtIndex:0];
[master changeRestaurant];
}

- (void)changeTable:(id)sender {
UINavigationController *nav = (UINavigationController *)[self.viewControllers objectAtIndex:1];
TableController *detail = [nav.viewControllers objectAtIndex:0];
[detail changeTable:sender];
}

为了让它工作,我向 UISplitViewController 添加了一个 BOOL

@interface RootSplitViewController : UISplitViewController

@property (nonatomic) BOOL masterIsVisible;

@end

然后在 MasterViewController 中调用它。

- (void)viewDidDisappear:(BOOL)animated {
RootSplitViewController *rootView = (RootSplitViewController *)self.splitViewController;
rootView.masterIsVisible = NO;
}

- (void)viewDidAppear:(BOOL)animated {
RootSplitViewController *rootView = (RootSplitViewController *)self.splitViewController;
rootView.masterIsVisible = YES;
}

我知道这可能不是漂亮的方法,但它确实有效。如果有人知道更好的方法,我很乐意听取您的反馈。

关于ios - UISplitviewController 和不同的 UIKeyCommands 取决于主控、细节或两者都在屏幕上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38553232/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com