2010-11-11 97 views
6

我有一個UIPageControl。當我點擊一個點來改變頁面時,沒有任何反應。第二個點不會突出顯示。UIPageControl不響應觸摸,不改變點

它工作正常,但是,當我滾動我的UIScrollView。在這種情況下,第二個點將突出顯示。

pageControl = [[UIPageControl alloc] init] ; 
pageControl.center = CGPointMake(160.0f, 430.0f); 
pageControl.numberOfPages=nPages; 
pageControl.currentPage=0; 
pageControl.hidesForSinglePage = YES; 
pageControl.userInteractionEnabled =YES; 

[pageControl addTarget:self action:@selector(pageTurn:) forControlEvents:UIControlEventValueChanged]; 

[self.view addSubview:pageControl]; 

當我改變pageControl Value的時候應該調用它,但是它不會被調用,因爲它不響應觸摸。

- (void) pageTurn: (UIPageControl *) aPageControl 
{ 
    int whichPage = aPageControl.currentPage; 
    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:0.3f]; 
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 
    sv.contentOffset = CGPointMake(320.0f * whichPage, 0.0f); 
    [UIView commitAnimations]; 
} 

回答

17

設置頁面控件的框架(寬度和高度)不只是中心,否則它具有零維度並且不響應觸摸。

pageControl = [[UIPageControl alloc] 
       initWithFrame:CGRectMake(100, 430, 200, 50)]; 
pageControl.center = CGPointMake(160.0f, 430.0f); 
+1

這不起作用。我將頁數設置爲7.當我點擊點2和3時,它沒有響應。我點擊了點4,它響應並保持點擊它直到我到達最後一個點,即7.現在,當我點擊點2和3時,它響應! – 2011-05-12 13:45:20

+1

@pratikshabhisikar:答案是專門解決Alex L的問題。當然,這不是也不可能成爲每個UIPageControl問題的答案。如果它不能解決你的具體情況,你的問題的原因和解決方案必須有所不同,並且不能證明它是失敗的。 – Anna 2011-05-12 14:06:31

+1

我在做[[UIPageControl alloc] init]時沒有設置幀,因爲我總是認爲UIPageControl的大小會自動調整。我錯了! [[UIPageControl alloc] initWithFrame:CGRect]取得了訣竅。 TY! – DZenBot 2012-12-09 06:57:22

4

我最近在我的應用程序中有同樣的症狀。我的解決方案是在視圖層次結構中將UIPageControl向上移動(如果您願意,可以使用z-index),以便它在根視圖內位於UIScrollView之上。如果它不在UIScrollView之上,即使它看起來像是可見的,它也不會觸及。

我不知道這是否是你的問題,但只是想我要附和。

2

有時,它有助於使的PageControl所有重疊子視圖的前面。

那是在我的情況天雷:

[self.view bringSubviewToFront: pageControl]; 
2

有時當的PageControl寬度太小,這也可能發生。嘗試將頁面控件組件的寬度設置得相當大, 320.然後它應該更好地工作。

+0

您的評論「喚醒我」,我將pageControl設置爲其父視圖的寬度,現在,點擊次數非常高。 – user1105951 2016-05-23 10:36:37

+0

好!我很高興知道這一點。 – flame3 2016-05-24 04:01:21