使用Storyboard和Autolayout旋转到横向后,UIScrollView中的UIButtons是不可触摸的?

时间:2014-04-29 22:40:00

标签: ios objective-c uiscrollview uibutton landscape-portrait

我有很多"按钮"在ScrollView中的SuperViewViewController中的查看

ViewController
   View
      ScrollView
         View
            Button
            Button
            Button
            Button
            Button
            ....

我使用autolayout,查看ScrollView(尾随,顶部,机器人,引导0,对齐x,y中心) ScrollViewViewController.View相同。

当旋转到横向模式时,屏幕仅识别 x 0到320 的触摸, x 320 后的任何按钮都无法触摸。

我确实更改了SuperViewScrollView和内容视图的框架,但没有做任何事情

-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
    if (UIInterfaceOrientationIsLandscape(toInterfaceOrientation)) {
        _contentView.frame = CGRectMake(0, 0, 1000,1000);
        _mainView.frame = CGRectMake(0, 0, 1000,1000);
        _scrollView.frame = CGRectMake(0, 0, 1000,1000);

        NSLog(@"size of self is %@",NSStringFromCGSize(self.view.frame.size));
        NSLog(@"size of scrollview is %@",NSStringFromCGSize(_scrollView.frame.size));
        NSLog(@"size of contentView is %@",NSStringFromCGSize(_contentView.frame.size));
        NSLog(@"size of MainView is %@",NSStringFromCGSize(_mainView.frame.size));

    } else {
    }
}

有谁知道为什么?

感谢。

正如Matt建议的那样,我在旋转后更改了框架(didRotateFromInterfaceOrientation)。以下是视图框架的日志和一个不可触摸的按钮

2014-04-29 18:08:27.528 [84526:60b] size of self is {{0, 0}, {568, 288}}
2014-04-29 18:08:27.529 [84526:60b] size of scroolview is {{0, 0}, {568, 336}}
2014-04-29 18:08:27.529 [84526:60b] size of content is {568, 466}
2014-04-29 18:08:27.529 [84526:60b] size of contentView is {{0, 0}, {568, 466}}
2014-04-29 18:08:27.530 [84526:60b] size of MainView is {{0, 0}, {568, 288}}
2014-04-29 18:08:27.530 [84526:60b] size of myBtn is {{364, 45}, {50, 50}}

所以myBtn在contentView中,但它不可触摸?

1 个答案:

答案 0 :(得分:1)

旋转设备时是否收到任何约束警告?

我有同样的问题,能够看到一个挑选视图,但在我旋转设备时无法点击。返回上一个方向后再次工作。

在我的情况下,解决方案是删除所有约束(首先是备份项目)并重置为建议的约束。

然后它奏效了。

希望它有所帮助。

有趣的信息:在我将XCode从4.X更新到5.0之后,我会告诉你这种情况已经发生了,因此,故事板中的某些内容可能无法正确升级。