ios - 未始终为 UIPageControl 触发 UIControlEventValueChanged 事件

标签 ios uipagecontrol uicontrolevents

假设我们有十页。

事件的事件处理程序添加如下:

运行应用程序。 现在在十个页面中,默认选择第 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/

相关文章:

swift - 无法更改 UIPageControl 中的 currentPage 属性

ios - 获取或设置 UIButtonTypeInfoLight 的点击区域

ios - Objective-C - 从核心数据中检索一对多关系数据

ios - 使用 Firebase/Analytics pod 时 SwiftUI 预览不起作用

ios - 以编程方式在 swift 上截图

ios - UIPageControl - 单击按钮更改页面

ios - 如何在 map View 中将标注添加到单个注释中

ios - 如何在 UIPageViewController iOS Swift 3 中更改页面后进行小摇晃

ios - 升级到 IOS 6 自定义键盘不再响应 UIControlEventEditingChanged

ios - UIBarButton 的点击事件如何处理