0

将我的 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 创建序列。如果我在 IOS6 模拟器上运行它,模式视图会保持居中,但如果在 IOS7 模拟器上运行它,它会在输入字段中设置焦点后“捕捉”到左侧或右侧:

[self.subject becomeFirstResponder];

还有其他人有这个问题吗?

- 更新 - -

在这个 bug 困扰我几个小时后,我尝试“重做”viewcontroller 类,并且意外地将 becomeFirstResponder 添加到 viewDidLoad 而不是 viewDidAppear 中,它解决了这个问题。

4

1 回答 1

2

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

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

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

于 2014-01-16T13:54:21.633 回答