2011-05-23 29 views
1

我有兩個問題,UIPageControl - 要去特定的點?

1)如果我有10個點(UIPageControl),並且我想直接進入任何特定的點,從1開始,而不是通過2到4來到。我該怎麼做?

2)&是否有可能通過點自動移動,就像2分鐘後視圖會隨着點的變化而沒有用戶交互(就像我們在廣告中看到的一樣)?

回答

1
  1. pageControl.currentPage = 5

  2. 是的,你需要設置一個NSTimer。

    myTimer = [NSTimer scheduledTimerWithTimeInterval:5 target:self selector:@selector(changeDot:) userInfo:nil repeats:YES]; 
    

編輯:

NSTimer Class Reference

+0

的NSTimer代碼不工作..我應該在哪裏寫下它? – sameet 2011-05-26 10:01:25

+0

不工作是什麼意思?你有沒有實現changeDot方法?你是否宣佈計時器?你開火nstimer了嗎? – 2011-05-26 10:06:18

0

1)底層視圖是一個滾動視圖,對吧?然後你可以在代碼中設置contentOffset。

2)您可以創建一個計時器來更改contentOffset。

0

對於第一個,它是不可能的(見docs):

頁面控制前進只有一個 頁在任一方向。

至於第二個,你應該設置一個計時器。

5

我知道它已經一段時間。但我會給我的解決方案,只是爲了記錄。

使用UIPageControl,我試圖通過點擊一個點來跳轉到一個頁面。 要做到這一點,在UIPageControl子我增添了一抹處理程序:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

和相知點的大小,計算出被貼點的指數 - >頁面。 由於增加了觸摸處理程序,選擇到UIControlEventValueChanged採空工作,所以只要致電: - (void)sendActionsForControlEvents:(UIControlEvents)controlEvents檢查here

沒有什麼難的,它是這樣結束:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    CGPoint touchPoint = [[touches anyObject] locationInView:self]; 
    float dotSize = self.bounds.size.width/(self.numberOfPages + 2); 
    int jumpToPage = (int)touchPoint.x/dotSize; 
    self.currentPage = jumpToPage; 
    [self sendActionsForControlEvents:UIControlEventValueChanged]; 
} 
+0

嗨Sasho!我看到你編輯了我的答案。我可以問你爲什麼?爲什麼在頁面中添加「2」?就像那個點的大小不正確,我想。請解釋。謝謝 – Frade 2013-12-23 13:05:45

+0

嗨弗拉德,剛纔看到你的評論。我幾乎忘記了我當時做了什麼。 我的推理是這樣的:我認爲點沒有采取確切的pagecontrol的寬度。它們之間有一些空間,包括第一個點左側的空間和最後一個點右側的空間(從左到右數)。 無論如何,它在我的情況下正好適用於添加「2」,並且與原始來源不太精確。 如果您發現我的編輯不當,請隨時編輯回來。 謝謝。 – Sasho 2014-01-09 15:49:09