iPhone + UIScrollView

Posted

技术标签:

【中文标题】iPhone + UIScrollView【英文标题】: 【发布时间】:2009-12-08 09:43:00 【问题描述】:

我在屏幕上有一个 UIScrollView。

滚动视图包含一个包含 UIButton 的视图。

问题是,在滚动视图时,如果我按下滚动视图之间的任何按钮,我的滚动视图将弹回屏幕顶部或底部,这意味着它不会保留在我按下按钮的位置。

【问题讨论】:

嘿伙计!你介意把注意力集中在你自己的问题上,并对我和艾伦给你的答案发表评论吗? 【参考方案1】:

看看 UIScrollViewDelegate 类。您想禁用按钮,同时 滚动开始滚动完成后启用它。

【讨论】:

你就像某种心灵感应者,从第一张照片开始就猜测作者真正在说什么...... :) 我希望。 :) 更多的是“去过那里,做过那个”,不想看到其他人遇到这个问题。【参考方案2】:

我已经重现了您在问题中描述的情况(至少我是这么认为的):一个 UIScrollView、一个 UIScrollView 内的 UIView 和一个 UIView 内的 UIButton。

我尝试点击滚动视图并在按钮上移动手指,但没有让它弹到顶部或类似的东西。我也尝试在滚动滚动后点击按钮,它也没有副作用。

所以我的猜测是你正在处理的是这样的:一个 UINavigationController 和你 UIScroll-UIView-UIButton UIViewController 作为根视图控制器;在被点击后,UIButton 将一个新的 UIViewController 推送到 UINavigationController;然后你回到 UINavigationController 堆栈中的前一个 UIViewController,这就是你失去滚动位置的时候。

如果我的猜测是正确的,那么这就是你需要做的。

在推送新的 UIViewController 之前,请使用以下代码保存滚动视图的当前内容偏移量:

[[NSUserDefaults standardUserDefaults] setObject:NSStringFromCGPoint(theScrollView.contentOffset) forKey:@"ScrollViewLastContentOffset"];

在您返回 UIScrollView UIViewController 后,在您的 viewWillAppear: 方法中使用以下代码:

- (void)viewWillAppear:(BOOL)animated 
 [super viewWillAppear:animated];

 NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
 if ([defaults stringForKey:@"ScrollViewLastContentOffset"] != nil) 
  theScrollView.contentOffset = CGPointFromString([defaults stringForKey:@"ScrollViewLastContentOffset"]);
  [defaults removeObjectForKey:@"ScrollViewLastContentOffset"];
 

即使我的猜测错了,请对我和艾伦的回答发表评论并确认/反驳他们,以便我们能够帮助您。您是否介意提供有关您的问题的更多详细信息,这样我们就无需再猜测到底发生了什么。

【讨论】:

【参考方案3】:

如果我理解正确,您的按钮在滚动视图内吗?当按下时,您希望他们停止滚动或将滚动视图移动到特定点?比如顶部还是底部?如果是这样,请使用 myScrollView.contentOffset = CGPointMake(0, 0); 并指定您需要的 x 和 y 值。因此,该示例中的 (0, 0) 将是左上角。

如果您想为这个过渡设置动画,您可能还想尝试[myScrollView setContentOffset:CGPointMake(0, 0) animated:YES];

【讨论】:

以上是关于iPhone + UIScrollView的主要内容,如果未能解决你的问题,请参考以下文章

在 iphone 5 和 iphone 6 中动态设置字体大小

Surface Pro4链接不上iphone手机的热点

iphone13和12外观的区别 iphone13和iphone12对比哪个好

为 iPhone 和 iPhone 4 开发之间有啥变化?

iPhone 5 与 iPhone 4 的图像命名

设置图像以适合 iPhone 5 和 iPhone 6