我正在使用一个UIScrollView来显示水平滚动的UIButtons。现在,当我选中并高亮一个按钮时,我不应该将该按钮滚动出视图。现在我只允许一个按钮被选中。
考虑问题后:如何停止一个UIScrollView在一个特定的点?并实现如下:
-(void) scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset{
if(targetContentOffset->x==0){
return;
}else if(targetContentOffset->x>self.maxScrollPoint.x){
targetContentOffset->x=self.maxScrollPoint.x;
}else if (targetContentOffset->x<self.maxScrollPoint.x+self.componentView.frame.size.width){
targetContentOffset->x=self.maxScrollPoint.x+self.componentView.frame.size.width;
}
}
其中maxScrollPoint是Scrollview中UIButton的原点。这个实现允许用户滚动到可见矩形之外,然后滚动回按钮的原点。
我是否可以限制scrollview停止滚动超过该点,也超过scrollview的最大可见宽度(不是contentsize)
您可能想要这样的内容:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
if (_selectedButton != nil)
{
CGRect oldFrame = _selectedButton.frame;
oldFrame.origin = scrollView.contentOffset;
_selectedButton.frame = oldFrame;
}
}
这个想法是,每当滚动视图滚动时,_selectedButton
(如果有的话)将把它的原点放在滚动视图当前框架的左侧。您可能需要稍微修改一下,但它应该可以工作。