我在屏幕上有一个UIScrollView。iPhone + UIScrollView
滚动视图包含UIButtons视图。
问题是,当滚动视图时,如果我按下滚动视图之间的任何按钮将弹出到屏幕的顶部或底部,这意味着它不会保留在我按下按钮的位置。
我在屏幕上有一个UIScrollView。iPhone + UIScrollView
滚动视图包含UIButtons视图。
问题是,当滚动视图时,如果我按下滚动视图之间的任何按钮将弹出到屏幕的顶部或底部,这意味着它不会保留在我按下按钮的位置。
看看UIScrollViewDelegate类。当滚动开始时,您想要禁用按钮,而滚动则开始启用它。
你喜欢某种类型的传心术,猜测作者从第一次拍摄中真正在说什么...... :) – 2010-01-24 19:54:30
我希望。 :)这更多的是“在那里,做到了这一点”的问题,并不想看到别人承受了这个问题。 – 2010-01-25 04:05:24
如果我理解正确,你的按钮是在滚动视图内?当按下时,你希望他们停止滚动或将滚动视图移动到特定点?如顶部或底部?如果是这样,请使用myScrollView.contentOffset = CGPointMake(0, 0);
并指定您需要的x和y值。所以这个例子中的(0,0)就是左上角。
如果要为此转换设置动画,您可能还想尝试[myScrollView setContentOffset:CGPointMake(0, 0) animated:YES];
。
我复制你在你的问题已经描述的情况(至少我是这么认为的):一个UIScrollView的的UIScrollView与UIView的内部的里面的UIButton一个UIView。
我尝试了轻敲触摸滚动视图,并将我的手指移过按钮,并没有得到它反弹到顶部或类似的东西。我也试过在滚动滚动后点击按钮,它也没有副作用。
所以我的猜测是,你正在处理的是这样的:一个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"];
}
}
即使我猜错了,请评论我和艾伦的回答,并确认/驳回他们,以便我们能够帮助你。你还介意提供关于你的问题的更多细节,所以我们不需要猜测到底发生了什么。
嘿,伙计!你介意把你的注意力引到你自己的问题上,并对艾伦和我给你的答案发表评论吗? – 2010-01-17 21:09:57