gpt4 book ai didi

objective-c - iOS Landscape 和 Portrait Delegate 混淆

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

在大多数情况下,我已经把事情弄清楚了。我似乎无法解决一个小问题。我会尽可能详细地概述这个问题,我不认为此时提出我的问题需要我发布任何代码,但请随时提问。

与大多数应用程序一样,我的应用程序默认采用纵向查看。在主要交互区域,当用户旋转设备时,我不必提供任何重大改变的代码,因为相反,我在 View 堆栈顶部放置了一个新 View 。这非常有效,并且是用户可以在横向模式下与设备交互的两种方式之一。

第二个是模态呈现的屏幕(来自这个主要交互区域),它使用 UIWebView 从应用程序中播放 YouTube 视频,同样效果很好。

当用户在横向模式下关闭模态视图 Controller 时,就会出现问题。发生的事情是用户返回到内容调整为横向模式的主交互区域,并且没有调用通常从 View Controller 为这个主交互区域调用的委托(delegate)方法,我使用这个委托(delegate)方法使横向正常变化:

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { }

我将包括正在发生的事情的截图。

The main interaction area

纵向模式下主要交互区域的屏幕截图。

landscape mode

横向模式下主交互区域的屏幕截图。

landscape mode upon return from modal

在横向模式下关闭模态视图 Controller 并返回主交互区域后主交互区域的屏幕截图(注意内容已自行居中并切断了顶部并且不会拉伸(stretch)(不是那个我要求它这样做)

理想情况下,在这种情况下,我想从横向模式返回到主屏幕,并让屏幕截图 2 成为用户看到的内容,而不是屏幕截图 3。

有什么建议吗?再次,我很高兴发布代码。提前致谢。

编辑

回答:

非常简单,当在它自己的方法中转动时,我采用了将横向 View 放置在 View 堆栈顶部的代码。然后我在它之前休息的委托(delegate)方法和 ViewWillAppear 中调用该方法。

最佳答案

如果 View Controller 控制屏幕上的顶级 View ,系统只会将 willRotateToInterfaceOrientation: 发送到 View Controller 。由于您要呈现模态视图 Controller ,因此模态视图 Controller 获取 willRotateToInterfaceOrientation:,而您的(隐藏) View Controller 则没有。

当 View Controller 的 View 由于模态视图 Controller 正在消失而即将重新出现时,系统将 viewWillAppear: 发送到 View Controller 。所以你应该实现 viewWillAppear:。在该方法中,检查界面是否为横向。如果是,请显示您的横向 View 。否则,请隐藏您的横向 View 。

关于objective-c - iOS Landscape 和 Portrait Delegate 混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11888230/

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