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

iPad UIModalPresentationFormSheet与UITabBarController的moreNavigationController编辑模式问题,第1张

概述这似乎是一个错误,但我想知道是否有人能想到一个解决方法. 在iPad上,您将视图控制器显示为UIModalPresentationFormSheet.这个视图控制器正在扩展UITabBarController,并有足够的控制器来自动显示“更多”标签栏按钮.点击更多按钮后,它将正确显示列表,但只要点击“编辑”,它就会显示比实际表单更大的编辑视图(在表单内部裁剪),导致内容不在视图,包括带有“完成”按 这似乎是一个错误,但我想知道是否有人能想到一个解决方法.

在iPad上,您将视图控制器显示为UIModalPresentationFormSheet.这个视图控制器正在扩展UITabbarController,并有足够的控制器来自动显示“更多”标签栏按钮.点击更多按钮后,它将正确显示列表,但只要点击“编辑”,它就会显示比实际表单更大的编辑视图(在表单内部裁剪),导致内容不在视图,包括带有“完成”按钮的工具栏.解雇的唯一方法是强制退出应用程序.

为了验证它不是我的应用程序特有的东西,我启动了一个单一的视图项目,并提出了一个简单的模态视图.这个模态视图控制器扩展了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而不做任何更改.

解决方法 美好的一天,dizy.

你做的一个很好的挑战.这是一个解决方案,也许它有点硬核,但它的工作原理.

我已经完成了你写的 – 子类化UITabbarController并将其作为模态视图控制器呈现.并遇到同样的问题.当点击“更多”屏幕中的“编辑”按钮时,会出现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子视图],您将获得:

(ID)  = 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编辑模式问题全部内容,希望文章能够帮你解决iPad UIModalPresentationFormSheet与UITabBarController的moreNavigationController编辑模式问题所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1082758.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存