gpt4 book ai didi

iphone - setContentOffset :animated:YES 问题

转载 作者:行者123 更新时间:2023-12-03 20:08:44 25 4
gpt4 key购买 nike

我遇到了一个几乎看起来像 iOS 中的错误的问题。我正在尝试在 UIScrollView 中做一些非常简单的滚动。如果我滚动到一个带有动画的点,它会完美地滚动到那里,但它不会将该点设置为 ScrollView 。 IE。当我稍后滚动到其他位置时,它会跳转到 0,0 并从那里开始动画。

我正在使用以下代码

[scrollView setContentOffset:CGPointMake(0, 95) animated:YES];
NSLog(@"offset x %@", [[NSNumber numberWithFloat:scrollView.contentOffset.x] stringValue]);
NSLog(@"offset y %@", [[NSNumber numberWithFloat:scrollView.contentOffset.y] stringValue]);

产生输出

offset x 0
offset y 0

而动画关闭时完全相同的代码:

[scrollView setContentOffset:CGPointMake(0, 95) animated:NO];
NSLog(@"offset x %@", [[NSNumber numberWithFloat:scrollView.contentOffset.x] stringValue]);
NSLog(@"offset y %@", [[NSNumber numberWithFloat:scrollView.contentOffset.y] stringValue]);

产生输出

offset x 0
offset y 95

我正在尝试自动滚动到 UITextView,因此我正在收听一些我通常进行滚动的键盘通知。但我已经在 viewDidLoad 中完成了这个测试,它产生了这些结果。

正在执行scrollView.contentOffset = CGPointMake(0,95);也可以正确设置该值。只是动画版没有。

编辑:我实际尝试运行的代码是这样的:

- (void)textFieldDidBeginEditing:(UITextField *)textField {
//60 is half the available space in portrait mode so it puts the textfield in the centre.
[self.scrollView setContentOffset:CGPointMake(0, textField.frame.origin.y-60) animated:YES];
}

这会将 View 滚动到正确的位置。但由于它似乎没有正确设置 contentOffset,因此它始终从 0,0 开始动画。现在不管我在动画之间等待多长时间。

最佳答案

我想说加布里埃尔和丹尼的答案都是正确的。在您的第一个代码片段中,您实际上是在尝试在设置之前获取最终值。也就是说,当您调用此

[scrollView setContentOffset:CGPointMake(0, 95) animated:YES];

您基本上启动了另一个线程,该线程为您的 ScrollView 移动设置动画,然后您立即尝试获取更新的值。它们将由第二个线程更新,您可以在某些委托(delegate)函数中捕获它们,例如scrollViewDidScroll:、scrollViewDidEndScrollingAnimation: 等

但如果你说,最终你的立场没有改变,那么我想,问题不在这里。我认为您提供的信息并没有触及问题本身。

---如果您正在使用表格 View ,那么您应该检查是否使用

-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section

在你的tableViewController类中。如果这样做,您应该将带有 setOffset 的代码放在其主体中,而不是 viewDidLoad 中。

---如果你的textView放置在某种弹出窗口上,比如UIAlertView,并且你想正确放置它,你应该看看UIAlertView的setTransform:方法。但据我所知,该问题已在 4.2 版本中修复。

关于iphone - setContentOffset :animated:YES 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6167924/

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