gpt4 book ai didi

iPad UIModalPresentationFormSheet 与 UITabBarController 的 moreNavigationController 编辑模式问题

转载 作者:行者123 更新时间:2023-12-04 15:35:30 25 4
gpt4 key购买 nike

这似乎是一个错误,但我想知道是否有人能想到解决方法。

在 iPad 上,您将 View Controller 呈现为 UIModalPresentationFormSheet。这个 View Controller 扩展了 UITabBarController 并且有足够的 Controller 来自动显示“更多”标签栏按钮。一旦您点击更多按钮,它将正确显示列表,但是一旦您点击“编辑”,它就会显示比实际表单更大的编辑 View (在表单内裁剪),导致内容超出 View ,包括带有“完成”按钮的工具栏。关闭的唯一方法是强制退出应用程序。

为了验证它不是特定于我的应用程序的东西,我启动了一个单 View 项目,并展示了一个简单的模态视图。此模态视图 Controller 扩展了 UITabBarController 并具有以下 init 方法:

- (id)init {
self = [super init];
if (self) {
self.modalPresentationStyle = UIModalPresentationFormSheet;
NSMutableArray *controllers = [NSMutableArray array];
for (int i = 0; i< 15; i++) {
UIViewController *vc = [[UIViewController alloc] init];
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:vc];
vc.title = [NSString stringWithFormat:@"view %i", i];
[controllers addObject:nav];
}
self.viewControllers = controllers;
}
return self;
}

我还尝试将 modalPresentationStyle 添加到 moreNavigationController 而没有任何变化。

最佳答案

美好的一天,头晕。

你做了一个很好的挑战。这是一个解决方案,也许它有点硬核,但它确实有效。

我已经按照你写的那样做了——继承了 UITabBarController 并将其呈现为模态视图 Controller 。并遇到同样的问题。当点击“更多”屏幕中的“编辑”按钮时,UITabBarCustomizeView 出现并且它的框架不足。

所以我做了以下事情。我已将 MyModalTabBarVC 设为自身的代表并实现了 tabBarController:willBeginCustomizingViewControllers:方法:

- (void)tabBarController:(UITabBarController *)tabBarController     
willBeginCustomizingViewControllers:(NSArray *)viewControllers
{
UIView *modalView = self.view;
CGRect bounds = modalView.bounds;

UIView *customizationView = [[modalView subviews] objectAtIndex:1];
UIView *customizationNavBar = [[customizationView subviews] objectAtIndex:0];

CGRect navBarFrame = [customizationNavBar frame];
navBarFrame.size.width = bounds.size.width;
customizationNavBar.frame = navBarFrame;
customizationView.frame = bounds;
}

所以当这个方法被调用时 UITabBarCustomizeView已经创建。并且可以手动更改错误的框架。如果您登录 po [self.view subviews]一开始你会得到:
(id) $1 = 0x06c6a940 <__NSArrayM 0x6c6a940>(
<UITransitionView: 0xd744ab0; frame = (0 0; 540 571); clipsToBounds = YES; autoresize = W+H; layer = <CALayer: 0xd744b50>>,
<UITabBarCustomizeView: 0x6c5e570; frame = (0 -384; 768 1004); animations = { position=<CABasicAnimation: 0x6c569a0>; }; layer = <CALayer: 0x6c618d0>>,
<UITabBar: 0xd744110; frame = (0 571; 540 49); autoresize = W+TM; layer = <CALayer: 0xd742b80>>,
)

PS。此解决方案不修复动画。从日志中可以看出,损坏的动画已经创建并收费。我希望取消它并适本地添加一个新的不会成为问题。

关于iPad UIModalPresentationFormSheet 与 UITabBarController 的 moreNavigationController 编辑模式问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12287251/

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