我正在使用UIScrollView显示水平滚动的UIButtons。 现在,当我选择并突出显示一个按钮时,我不能将该按钮滚出视图。我只允许选择一个按钮。
在考虑了问题后:How to stop a UIScrollView at a specific point?并实施了以下内容:
-(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的原点。此实现允许用户滚动到可见的rect之外,然后滚动回按钮的原点。
无论如何,我可以限制滚动视图停止滚动超过该点,也超出滚动视图的最大可见宽度(不是内容大小)
答案 0 :(得分:0)
你可能想要这样的东西:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
if (_selectedButton != nil)
{
CGRect oldFrame = _selectedButton.frame;
oldFrame.origin = scrollView.contentOffset;
_selectedButton.frame = oldFrame;
}
}
这个想法是每当滚动视图滚动时,_selectedButton
(如果有的话)将其原点放在滚动视图当前帧的左侧。你可能不得不修补一下,但它应该有用。