旋转后,UIButtons停止工作至横向,然后返回纵向

时间:2013-07-25 22:03:19

标签: ios rotation uibutton landscape-portrait

概述:我有一个奇怪的错误,我的纵向视图右侧的按钮在旋转到横向然后再回到纵向后无效。

详细信息:以下是产生问题的方案。如果我以纵向开始,我的所有按钮都可以工作。我旋转到横向(见下面的代码),所有按钮都有效。我旋转回肖像,屏幕右侧1/4的按钮没有响应。这就像有一个覆盖这些按钮的透明视图。奇怪的是,如果按钮的一部分伸出那个隐形屏障的左边,我可以点击按钮的那一部分,但不能点击“封面”下面的右边部分。如果我此时要旋转到横向,那么横向中的所有按钮都会起作用。当我旋转回肖像时,那个看不见的“封面”向左移动了另外1/4以覆盖大约1/2的屏幕。如果我再次旋转到横向(所有按钮始终在横向上工作)然后再回到肖像,则不可见的“封面”已经移动了另外1/4以覆盖屏幕的3/4。最终,我的控件都没有纵向回应。

重要项目信息

  1. 此应用程序是通用的。问题只发生在iPad纵向模式。 iPhone版本从未在纵向(或横向)模式下显示此问题。
  2. 只有3个视图:容器视图(根视图),纵向视图和横向视图。
  3. 此应用是ARC,目标是6.1。我有所有正确的方法来处理旋转事件。
  4. 以下是旋转视图的代码:

    [portrait removeFromSuperview];
    [landscape removeFromSuperview];
    
    UIDeviceOrientation currentOrientation = [[UIDevice currentDevice] orientation];
    if (currentOrientation==UIDeviceOrientationUnknown) {
        currentOrientation = (UIDeviceOrientation)[[UIApplication sharedApplication] statusBarOrientation];
    }
    if ((currentOrientation == 0) || (UIInterfaceOrientationIsPortrait(currentOrientation))) {
        [[self view] addSubview:portrait];
    }
    else {   //landscape
        [[self view] addSubview:landscape];
    }
    

    我尝试了什么

    1. 我发现远程类似声音的问题提到使用Instruments检查内存泄漏。我尝试了僵尸和分配模板,并没有看到任何奇怪的东西(虽然这是我第一次使用仪器)。
    2. 编辑:所有这些都在模拟器中,我还没有在设备上测试过这个问题。
    3. 感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

在模拟器的菜单栏上选择

调试 - >颜色混合层

然后Command + 将其旋转

然后Command + 将其旋转回来

可能有一个视图会被奇怪地重新定位并覆盖 - 可能是部分 - 你的按钮

答案 1 :(得分:-1)

我认为你没有正确设置potrait和landscape的框架,这意味着当你旋转它时,其他一些组件的框架与按钮框架重叠,因此用户交互被禁用