将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,它修复了这个问题。
答案 0 :(得分:2)
当我将应用程序从iOS6移植到iOS7时,我在iOS 7的横向模式下遇到了类似的问题,我的UITableViewController居中但是当在viewDidAppear中调用方法becomeFirstResponder并且键盘出现时,视图移动到左侧或右侧屏幕取决于旋转方向。 解决方案很有趣,我必须在主线程中运行它:
- (void)viewDidAppear:(BOOL)animated {
dispatch_async(dispatch_get_main_queue(), ^{
[textField becomeFirstResponder];
});
}
现在一切正常。这可能对某些人有所帮助,我在谷歌寻找解决方案已有几天没有找到任何合适的解决方案。