UIPageControl не реагирует на прикосновения, не меняет точку - PullRequest
6 голосов
/ 11 ноября 2010

У меня есть 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, но оно не вызывается, поскольку не реагирует на прикосновения.

- (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];
}

Ответы [ 4 ]

17 голосов
/ 11 ноября 2010

Установите рамку управления страницей (ширину и высоту), а не только центр, иначе он имеет нулевые размеры и не реагирует на прикосновения.

pageControl = [[UIPageControl alloc] 
                 initWithFrame:CGRectMake(100, 430, 200, 50)];
pageControl.center = CGPointMake(160.0f, 430.0f);
4 голосов
/ 11 ноября 2010

У меня недавно были те же симптомы в моем приложении.Мое решение состояло в том, чтобы переместить UIPageControl вверх в иерархии представления (z-index, если хотите), чтобы оно было выше UIScrollView внутри корневого представления.Если он не выше UIScrollView, он не будет касаться, даже если он выглядит так, как будто он виден.

Я не уверен, является ли это вашей проблемой, но просто подумал, что я вмешусь.

2 голосов
/ 25 февраля 2014

Иногда, когда ширина элемента управления страницы слишком мала, это также может произойти. Попробуйте установить ширину компонента pagecontrol достаточно большой, например. 320. Тогда оно должно работать лучше.

2 голосов
/ 11 февраля 2014

Иногда помогает вывести pageControl на передний план всех перекрывающихся подпредставлений.

Это был трюк в моем случае:

  [self.view bringSubviewToFront: pageControl];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...