gpt4 book ai didi

iphone - 对为什么我的 UISCrollView 的框架为空感到困惑

转载 作者:行者123 更新时间:2023-11-28 19:22:03 26 4
gpt4 key购买 nike

我从一个空项目开始,并添加了一个 View Controller 及其 Nib 。在 nib 内部,有一个以 UIScrollView 为 subview 的 View 。在 ScrollView 中,我有多个 Assets ,如文本字段、标签和按钮。

当键盘出现时,我希望我的 ScrollView 向上移动。我在 stackoverflow 上查看了如何执行此操作。我基本上是复制代码并尝试理解它。但是, View 仍然没有向上移动。所以是时候进行一些调试语句了....

我的 UIScrollView 连接(IBOutlet)到 RootViewController 并且可以从那里访问。我尝试打印出我的 scrollView(实例名称)并且我得到了一个对象。但是,当我尝试打印出 scrollView.frame 时......我得到了 null......有人知道这是为什么吗?

这是我的一些调试语句的一些代码片段

- (void) moveScrollView:(NSNotification *) notification up: (BOOL) upFlag{
NSDictionary * userInfo = [notification userInfo];

NSTimeInterval animationDuration;
UIViewAnimationCurve animationCurve;
CGRect keyboardEndFrame;

[[userInfo objectForKey:UIKeyboardAnimationCurveUserInfoKey] getValue:&animationCurve];
[[userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey] getValue:&animationDuration];
[[userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] getValue:&keyboardEndFrame];

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:animationDuration];
[UIView setAnimationCurve:animationCurve];

CGRect newFrame = scrollView.frame;
CGRect keyboardFrame = [self.view convertRect:keyboardEndFrame toView:nil];
NSLog(@"scrollView: %@", scrollView);
NSLog(@"frame: %@", scrollView.frame);
NSLog(@"Old Height: %@", scrollView.frame.size.height);

newFrame.size.height -= keyboardFrame.size.height * (upFlag ? 1 : -1);
NSLog(@"New Height: %@", newFrame.size.height);
scrollView.frame = newFrame;

[UIView commitAnimations];
}

- (void) keyboardShow:(NSNotification *) notification{
NSLog(@"Keyboard Show");
[self moveScrollView: notification up:YES];
}

Nib

最佳答案

您不能使用 %@ 打印框架。 %@ 打印 Objective C 对象; frame 不是 Objective C 对象。它是一个 C 结构,CGRect。像这样单独打印其组件:

NSLog(@"frame: (%0f %0f; %0f %0f)",
scrollView.frame.origin.x, scrollView.frame.origin.y,
scrollView.frame.size.width, scrollView.frame.size.height);

我认为使用调试器更有效。在调试器中,您可以使用

po object

打印 Objective C 对象,以及

print (CGRect)[scrollView frame]

打印框架。

顺便说一句,Apple 文档中推荐的调整键盘 ScrollView 的方法是设置内容插入,而不是更改框架。我也开始改变框架,但遇到了奇怪的问题。

关于iphone - 对为什么我的 UISCrollView 的框架为空感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8026268/

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