假设我们有十页。
事件的事件处理程序添加如下:
运行应用程序。 现在在十个页面中,默认选择第 1 页(索引 0)。触摸第二页或第三页。该事件不会被触发。如果选择了最后一页,将触发该事件。最后一页也是如此。选择最后一页后,选择上一页。不会触发该事件,但如果您选择第一页,则不会触发该事件。
要查看此案例的简单演示,请下载 UICatalog 示例并打开 ControlsViewController.m 并在第 375 行将 UIControlEventTouchUpInside 更改为 UIControlEventValueChanged。
- (UIPageControl *)pageControl
{
if (pageControl == nil)
{
CGRect frame = CGRectMake(120.0, 14.0, 178.0, 20.0);
pageControl = [[UIPageControl alloc] initWithFrame:frame];
[pageControl addTarget:self action:@selector(pageAction:) forControlEvents:UIControlEventValueChanged];
// in case the parent view draws with a custom color or gradient, use a transparent color
pageControl.backgroundColor = [UIColor grayColor];
pageControl.numberOfPages = 10; // must be set or control won't draw
pageControl.currentPage = 0;
pageControl.tag = kViewTag; // tag this view for later so we can remove it from recycled table cells
}
return pageControl;
}
最佳答案
您可能误解了页面控件的工作原理。它是当前页面数量的视觉指示器,但点击特定点不会转到该页面。您一次只能移动一页,点击左半部分后退一页,右半部分前进一页。
如果您在第一页上,点击左半边,则无法后退另一页,因此什么也不会发生。
我不太喜欢这种行为,尤其是在 iPad 上,所以通常使用子类或我自己的触摸处理来确定触摸位置是在当前所选页面的左侧还是右侧,然后发送事件适本地。
关于ios - 未始终为 UIPageControl 触发 UIControlEventValueChanged 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13507961/