gpt4 book ai didi

ios - Xcode 6 中新 iOS 模拟器的指标变化

转载 作者:行者123 更新时间:2023-12-02 02:34:21 24 4
gpt4 key购买 nike

我的应用程序在 iPad 视网膜模拟器上的 Xcode 5 中运行良好,但是当我在 iPad 视网膜模拟器上的 Xcode 6 的同一项目上运行模拟器时,这一点代码:

UIView *firstResp = [self.view findFirstResponder];
CGRect firstResponderFrame = [firstResp convertRect:firstResp.bounds toView:self.view];


NSDictionary* info = [aNotification userInfo];
CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;

if (firstResponderFrame.origin.y+firstResponderFrame.size.height+40-self.scrollView.contentOffset.y > self.view.window.frame.size.width-kbSize.width) {
dispatch_async(dispatch_get_main_queue(), ^{
[self.scrollView setContentOffset:CGPointMake(0, firstResponderFrame.origin.y-self.view.window.frame.size.width/2+100+firstResponderFrame.size.height/2) animated:YES];
});


}

基本上,此代码在键盘显示时执行,以使 View 居中。现在它的表现非常糟糕;有时甚至没有键盘出现。

Xcode 6 中没有显示任何错误。从我对不同框架的初始测试来看,该指标似乎是相同的。我在键盘上使用 NSNotification:也许这就是原因?

此代码也在另一个 VC 的容器 View Controller 内的 View Controller 中。

这并不是一个具体的问题,但我很好奇为什么它不起作用。我在两个版本的 Xcode 中都在 iOS 7.1 上运行。 Xcode 6 中的模拟器在窗口标题栏上显示 iOS 8,但我的应用程序配置为在 iOS 7.1 上运行。

**

编辑:

**NVM..找到了。在提问之前我没有进行足够彻底的测试。对于那些感兴趣的人来说,iOS 7 中有一个错误,即使方向发生了变化,也会导致高度和宽度保持不变,据我所知,这发生在 view.window.frame 和键盘尺寸上。这个错误似乎在 iOS 8 中消失了。

最佳答案

解决 iOS 7 纵向宽度和高度错误 - 我希望这对将来迁移 iOS8 的人有所帮助。

// Called when the UIKeyboardDidShowNotification is sent.
- (void)keyboardWillShow:(NSNotification*)aNotification
{
[self UpdatePatientFromForm];
UIView *firstResp = [self.view findFirstResponder];
CGRect firstResponderFrame = [firstResp convertRect:firstResp.bounds toView:self.view];


NSDictionary* info = [aNotification userInfo];
CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;

//Account for iOS 7 inversion of height and width
CGFloat kbHeight = (kbSize.width>kbSize.height)? kbSize.height : kbSize.width;
CGFloat windowHeight = (self.view.window.frame.size.width>self.view.window.frame.size.height)? self.view.window.frame.size.height : self.view.window.frame.size.width;
CGFloat visibleScreenHeight = windowHeight - kbHeight;


if (firstResponderFrame.origin.y+firstResponderFrame.size.height+100-self.scrollView.contentOffset.y > visibleScreenHeight) {
dispatch_async(dispatch_get_main_queue(), ^{
[self.scrollView setContentOffset:CGPointMake(0, firstResponderFrame.origin.y-windowHeight/2+100+firstResponderFrame.size.height/2) animated:YES];
});
}
}

关于ios - Xcode 6 中新 iOS 模拟器的指标变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24314222/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com