2015-03-31 70 views
0

我有一個帶有左右按鈕的圖像組的UI​​ScrollView。我有實現左鍵操作使用此代碼移動左側的圖像UIScrollView在IOS中的左右箭頭

if (scroll.contentOffset.x <= scroll.frame.size.width) { 
     CGRect frame; 
     frame.origin.x = scroll.contentOffset.x + scroll.frame.size.width; 
     frame.origin.y = 0; 
     frame.size = scroll.frame.size; 
     //NSLog(@"%f %f %f", frame.origin.y ,scroll.frame.size.width, frame.origin.x); 
     [scroll scrollRectToVisible:frame animated:YES]; 
    } 

其完美的工作

同我實現我在做什麼錯誤代碼是正確的按鈕動作不能正常工作的功能下面

if ( scroll.frame.size.width <= scroll.contentOffset.x) { 
     CGRect frame; 
     frame.origin.x = scroll.contentOffset.x - scroll.frame.size.width; 
     frame.origin.y = 0; 
     frame.size = scroll.frame.size; 

     [scroll scrollRectToVisible:frame animated:YES]; 
    } 
+0

您可以參考以下鏈接http://stackoverflow.com/questions/2234875/programmatically-scroll-a-uiscrollview – iPhoneDev 2015-03-31 07:28:16

+0

我假設滾動視圖是水平的,橫指更改x,和你在這裏正在設置X零和計算Y,並且您還在IF – 2015-03-31 07:28:56

+0

@RaheelSadiq是檢查y位置是的,我正在使用水平滾動我更新我的代碼。但是當我單擊右鍵完全滾動 – Ben10 2015-03-31 07:37:54

回答

0

個左側functioanlity是正確的,而對於右側的功能假設你要創建水平滾動條,你應該用x原點和寬度工作。右側的條件和代碼應該基於x原點,寬度,基本上所有那些負責水平滾動的參數

1

它應該與左邊相反,檢查:如果它大於,並且減去滾動視圖寬度從當前x位置

if (scroll.contentOffset.x >= scroll.frame.size.width) { 
    CGRect frame; 
    frame.origin.x = scroll.contentOffset.x - scroll.frame.size.width; 
    frame.origin.y = 0; 
    frame.size = scroll.frame.size; 
    //NSLog(@"%f %f %f", frame.origin.y ,scroll.frame.size.width, frame.origin.x); 
    [scroll scrollRectToVisible:frame animated:YES]; 
} 
0

MMm ..我建議你以另一種方式做到這一點。創建兩個按鈕並單獨操作方法rightArrowNavigation,leftArrowNavigation。在我的代碼頁當前位置添加一個全局int值,並在viewDidLoad中分配0見下文

- (IBAction)rightArrowNavigation:(id)sender { 

    CGRect bounds = self.scrollView.bounds; 
    bounds.origin.x = CGRectGetWidth(bounds) * (currentPage + 1); 
    [self.scrollView scrollRectToVisible:bounds animated:YES]; 
} 

- (IBAction)leftArrowNavigation:(id)sender { 

    CGRect bounds = self.scrollView.bounds; 
    bounds.origin.x = CGRectGetWidth(bounds) * (currentPage - 1); 
    [self.scrollView scrollRectToVisible:bounds animated:YES]; 
} 
+0

什麼是當前頁? – hd1344 2017-03-28 10:11:46

+0

您正在查看的頁面,您需要按上面代碼中錯過的箭頭來增加和減少其值。 – Ajumal 2017-03-28 11:00:10

1

對於右側的按鈕,你爲什麼對contentOffset.y檢查?它應該是contentOffset.x,也有啓用分頁?

利用這一點,我認爲這將解決

if (_scroll.contentOffset.x >= _scroll.frame.size.width/2) { 
     CGRect frame; 
     frame.origin.x = _scroll.contentOffset.x - _scroll.frame.size.width; 
     frame.origin.y = 0; 
     frame.size = _scroll.frame.size; 
     //NSLog(@"%f %f %f", frame.origin.y ,scroll.frame.size.width, frame.origin.x); 
     [_scroll scrollRectToVisible:frame animated:YES]; 
    } 
+0

看到我更新的問題。我啓用了分頁 – Ben10 2015-03-31 08:33:41

+0

使用上面的測試解決方案。 – 2015-04-01 12:03:47

0

啓用滾動視圖頁面。如果你不想啓用分頁,請嘗試更多的數學。

(IBAction)leftButtonClicked:(id)sender { 

     if (self.iTemScrollView.contentOffset.x < 
self.iTemScrollView.contentSize.width - self.iTemScrollView.frame.size.width){   
    [self.iTemScrollView setContentOffset:CGPointMake(self.iTemScrollView .contentOffset.x + self.iTemScrollView .frame.size.width, 0) animated:YES]; 
    } 

} 

(IBAction)rightButtonClicked:(id)sender { 

    NSLog(@" rightbutton self.iTemScrollView.contentOffset.x %f",self.iTemScrollView.contentOffset.x); 
    NSLog(@"rightbutton self.iTemScrollView.contentOffset.y %f",self.iTemScrollView.contentOffset.y); 

    if (self.iTemScrollView.contentOffset.x>0){ 
    [self.iTemScrollView setContentOffset:CGPointMake(self.iTemScrollView .contentOffset.x - self.iTemScrollView .frame.size.width, 0) animated:YES]; 
    } 

} 
0
-(IBAction)leftScroll:(id)sender 
     { 
    //page variable initialize to 0 in view did load method 
     if(page!=0) 
     { 
     CGRect frame = scrollEvent.frame; 
     frame.origin.x = frame.size.width * (--page); 
     frame.origin.y = 0; 
     [scrollEvent scrollRectToVisible:frame animated:YES]; 
     } 
    } 
- (IBAction)rightScroll:(id)sender 
    { 

     if(arrData.count>page) 
      { 
      CGRect frame = scrollEvent.frame; 
      frame.origin.x = frame.size.width * (++page); 
      frame.origin.y = 0; 
      [scrollEvent scrollRectToVisible:frame animated:YES]; 
      } 
     } 
相關問題