gpt4 book ai didi

iphone - iPad 模态视图不旋转

转载 作者:行者123 更新时间:2023-12-03 20:35:37 24 4
gpt4 key购买 nike

所以我的应用程序中显示了一个模态视图,其中有一些信息供用户填写。问题是,当设备旋转时,会出现一些动画,但仅在帧中。表格本身不旋转。所有自动旋转选项均设置为"is"。当用户单击弹出窗口中的字段时,我会显示它。这让我怀疑这与此有关,但我不确定。这很奇怪,因为如果设备处于任一 View 中,然后显示模式窗口,那就没问题。仅当设备在模态视图中旋转时才会发生。有谁知道设备旋转时可能导致此行为的原因是什么?谢谢!

这是在弹出 View Controller 中处理的代码片段:

if (currentLevel == 1 && businessOrLocation == 0){
if(tbsViewController == nil)
tbsViewController = [[BusinessFilteredViewController alloc] initWithNibName:@"BusinessFilteredView" bundle:[NSBundle mainBundle]];

NSMutableArray *tempBusiness = [[NSMutableArray alloc] init];
for (id theKey in appDelegate.groupedBusiness) {
NSMutableArray *tempArr = [appDelegate.groupedBusiness objectForKey:theKey];
[tempBusiness addObject:tempArr];
}

tbsViewController.businessOrLocation = businessOrLocation;
tbsViewController.modalPresentationStyle = UIModalPresentationFullScreen;
tbsViewController.modalTransitionStyle = UIModalPresentationFullScreen;
[self presentModalViewController:tbsViewController animated:YES];
}

最佳答案

我也遇到了这个问题。根本问题是弹出窗口 Controller 无法呈现模态视图 - 似乎没有正确考虑或设计这种情况。在我的情况下,解决这个问题很容易。我刚刚扩展了我的弹出窗口托管 View Controller 的委托(delegate)协议(protocol)。主视图将自己设置为弹出窗口 View 的委托(delegate),并负责显示和关闭用户从弹出窗口中请求的模态视图。

由于我已经有了一个委托(delegate)协议(protocol),可以在用户单击“完成”时干净地关闭弹出窗口 View ,因此只需一小部分即可让自动旋转按照我想要的方式工作。以下是一些片段:

@protocol InfoViewControllerDelegate <NSObject>

@optional

// Implement this to close the info view once the user clicks done.
- (void)infoViewDidFinish:(InfoViewController *)view;

// Implement this method if the delegate launched us as a popup view and must therefore
// take responsibility for diplaying help.
- (void)infoViewDidRequestHelp:(InfoViewController *)view;

@end

在我的 iPad 主视图中呈现此弹出 View :

#pragma mark - InfoViewControllerDelegate methods

- (void)infoViewDidFinish:(InfoViewController *)view {
[self hideInfo:self];
}

- (void)infoViewDidRequestHelp:(InfoViewController *)view {
[self hideInfo:self]; // Close the info view first
HelpViewController *help = [[HelpViewController alloc] init];
help.delegate = self;
[self presentModalViewController:help animated:YES];
[help release];
}

为了让我在弹出 View 之外启动信息 View 的情况变得简单(例如,在 iPhone 上,它是一个简单的模态视图),它会检查委托(delegate)是否处理模态 subview ,并且如果没有,则自行处理。这样我就根本不需要改变 iPhone 的底座 Controller ,因为自动旋转已经在那里工作得很好了。这是信息 View Controller 中的“帮助”按钮操作,展示了我是如何做到这一点的:

- (IBAction)help:(id)sender {
if ([delegate respondsToSelector:@selector(infoViewDidRequestHelp:)]) {
[delegate infoViewDidRequestHelp:self];
} else {
HelpViewController *help = [[HelpViewController alloc] init];
help.delegate = self;
[self presentModalViewController:help animated:YES];
[help release];
}
}

使用此代码后,无论是否涉及弹出 View ,我的整个界面都可以在两台设备上顺利自动旋转。

关于iphone - iPad 模态视图不旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3628685/

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