2013-05-20 3 views
0

페이징을 사용할 수있는 UIScrollView가 있습니다. 모든 페이지에는 버튼이 있습니다. 모든 스 와이프에서 UIScrollView에 표시된 버튼이 선택되기를 바랍니다.UIScrollView에 프로그래밍 방식으로 표시되는 현재 버튼을 선택하십시오.

나는 해결책이

-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate 

를 기반으로하지만 어떻게 범위 &의 너무 많은 계산을하지 않고 오프셋을 표시하는 버튼을 알 수 같은데요?

감사

+0

'UIPageControl'으로 현재 페이지를 얻을 수 있고'View'에서 모든'SubViews'를 얻을 수 있습니다. ? – Buntylm

+0

현재 페이지 또는 새 페이지에서 버튼을 선택 하시겠습니까? –

+0

5 페이지 있습니다. 슬쩍 끝에서 3 페이지에서 4 페이지로 스 와이프 할 때 4 페이지의 버튼을 선택하고 \ 누르기를 원합니다. – Segev

답변

2

가장 쉬운 방법은 페이지 0 태그가 하나가 될 것 때문에 PAGENUMBER + 1 (+1 모든 기본값 태그가와 동일하여있는 UIScrollView에서 각각있는 UIButton에 대한 태그를 설정하는 것입니다 0 버튼을 찾을 수 있습니다). 그런 다음 필요에 따라 viewDidEndDecelerating/viewDidScroll 또는 다른 스크롤 뷰 대리자 메서드에서 태그를 계산할 수 있습니다. 나는이 같은 viewDidEndDecelerating 일에 모든 계산을하고 있어요 :

또한
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView { 
    int page = scrollView.contentOffset.x/scrollView.frame.size.width; 
    //now you have the current page so you can get the button 
    UIButton *button =(UIButton *) [scrollView viewWithTag:page+1]; //the +1 that I was talking about above 
    button.selected = YES; 
} 

당신이 다른 버튼을 취소 할 수 있습니다, 그래서 당신은 태그로도 같은 것을 찾을 수 있습니다

for(int i = 1; i<=numberOfPages; i++) { 
    UIButton *button =(UIButton *) [scrollView viewWithTag:i]; 
    button.selected = NO; 
    } 

그러나 단추를 활성화하는 부분 앞에 for 루프를 호출해야합니다.

+0

화려한 솔루션, 고마워요! – Segev

+0

기꺼이 도와 드리겠습니다;) – danypata

관련 문제