UIPageControl不响应触摸,不改变点

问题描述:

我有一个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]; 
} 

设置页面控件的框架(宽度和高度)不只是中心,否则它具有零维度并且不响应触摸。

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

我最近在我的应用程序中有同样的症状。我的解决方案是在视图层次结构中将UIPageControl向上移动(如果您愿意,可以使用z-index),以便它在根视图内位于UIScrollView之上。如果它不在UIScrollView之上,即使它看起来像是可见的,它也不会触及。

我不知道这是否是你的问题,但只是想我要附和。

有时,它有助于使的PageControl所有重叠子视图的前面。

那是在我的情况天雷:

[self.view bringSubviewToFront: pageControl]; 

有时当的PageControl宽度太小,这也可能发生。尝试将页面控件组件的宽度设置得相当大, 320.然后它应该更好地工作。

+0

您的评论“唤醒我”,我将pageControl设置为其父视图的宽度,现在,点击次数非常高。 – user1105951 2016-05-23 10:36:37

+0

好!我很高兴知道这一点。 – flame3 2016-05-24 04:01:21