2014-07-16 47 views
0

我正在使用UIScrollView來顯示水平滾動的UIButtons。 現在,當我選擇並突出顯示一個按鈕時,我應該無法將該按鈕從視圖中移出。當時我只允許選擇一個按鈕。如何維護UIScrollView,使子視圖始終可見?

考慮的問題後: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是UIButton的在滾動型的起源。該實現允許用戶滾動到可見矩形之外,然後滾動回到按鈕的原點。

反正我有可以限制了滾動停止滾動超出該點,也超出了滾動的最大可視寬度(不contentsize)

回答

0

你可能想是這樣的:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    if (_selectedButton != nil) 
    { 
     CGRect oldFrame = _selectedButton.frame; 
     oldFrame.origin = scrollView.contentOffset; 
     _selectedButton.frame = oldFrame; 
    } 
} 

的想法每當滾動視圖滾動時,_selectedButton(如果有的話)將其原點放置在滾動視圖當前幀的左側。你可能需要修改這一點,但它應該工作。

+0

我應該已經清楚scrollView中按鈕的位置不應該改變。我只是想確保整個可見的scrollView應該包含選定的按鈕,而不管其他什麼是可見的。 –

+0

@EdAbe如果要使按鈕變爲不可見,是否要防止滾動視圖滾動? – michaelsnowden

+0

是的。我想要在水平x軸上的按鈕的最大和最小位置滾動。 –