IOS 7打开模态视图不居中

时间:2013-10-15 08:51:42

标签: objective-c xcode ios7 modal-dialog

将XCode项目更新为Xcode 5和IOS 7后,我遇到了一个非常奇怪的问题。 我的项目是一个iPad项目,可以在模态模式下打开视图进行编辑。

更新后,所有我的模态视图在关注文本字段(或任何输入字段)后停止居中

我打开所有模态视图:

if ([[segue identifier] isEqualToString:@"add_log"]) {

    MemberAddLogViewController *vc = [segue destinationViewController];
    vc.selfDelegate = self;
    vc.member = self.member;
}

使用Style = Modal,Presentation = Default,Transation = Default创建seque。 如果我在IOS6模拟器上运行它,模态视图保持居中,但如果在IOS7模拟器上运行它,它会在输入字段中设置焦点后向左或向右“捕捉”:

[self.subject becomeFirstResponder];

其他人有这个问题吗?

- 更新---

这个bug烦扰了我几个小时后,我试图“重做”viewcontroller类,偶然我把becomeFirstResponder添加到viewDidLoad而不是viewDidAppear,它修复了这个问题。

1 个答案:

答案 0 :(得分:2)

当我将应用程序从iOS6移植到iOS7时,我在iOS 7的横向模式下遇到了类似的问题,我的UITableViewController居中但是当在viewDidAppear中调用方法becomeFirstResponder并且键盘出现时,视图移动到左侧或右侧屏幕取决于旋转方向。 解决方案很有趣,我必须在主线程中运行它:

- (void)viewDidAppear:(BOOL)animated {
    dispatch_async(dispatch_get_main_queue(), ^{
        [textField becomeFirstResponder];
    });
}

现在一切正常。这可能对某些人有所帮助,我在谷歌寻找解决方案已有几天没有找到任何合适的解决方案。