UIPageControl 没有在 valueChanged 上调用选择器
Posted
技术标签:
【中文标题】UIPageControl 没有在 valueChanged 上调用选择器【英文标题】:UIPageControl not calling selector on valueChanged 【发布时间】:2013-04-15 13:34:04 【问题描述】:我第一次尝试使用UIPageControl
,但我似乎无法让它调用UIControlEventValueChanged
上的函数。我在这里错过了什么吗?我什至尝试了情节提要实现,但结果相同。我也尝试了UIControlEventTouchUpInside
和其他操作。没有人调用下面的changePage:
函数。
在.h中:
@property (nonatomic, retain) UIPageControl *introPageControl;
-(IBAction)changePage:(id)sender;
在.m中:
@synthesize introPageControl;
- (void)viewDidLoad
[super viewDidLoad];
self.introPageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(0,208,self.view.frame.size.width,36)];
self.introPageControl.numberOfPages = 4;
self.introPageControl.currentPage = 0;
[self.introPageControl addTarget:self action:@selector(changePage:) forControlEvents:UIControlEventValueChanged];
[self.view addSubview:self.introPageControl];
-(IBAction)changePage:(id)sender
// NEVER GETS CALLED :(
【问题讨论】:
我复制粘贴您的代码并查看调用的 changePage 方法。你能提供更多细节吗?您是否可以在页面控件上方添加另一个子视图? 或者您可能取消订阅活动? @AlexanderMerchi 感谢您的回复。 self.introPageControl 是添加的最后一个对象,因此它位于最上层。我将如何检查退订事件?我从来没有添加明确的代码来做到这一点。 我创建了一个空项目,这些代码工作。我签入了 ios 4.3、ios 5.1、ios 6.1....... 您能否尝试 UIControlEventTouchUpInside 事件进行检查 【参考方案1】:UIControlEventValueChanged 仅在 UIPageControl 视图对象被点击时调用。
【讨论】:
“标签”是什么意思?你的意思是“敲击”?我遇到了类似的问题,但是点击控件没有效果。 发现我的问题 - 我的页面控件太小。页面控件似乎只响应点左侧或右侧的点击。点击这些点本身没有任何效果。【参考方案2】:斯威夫特 3:
pageControl.numberOfPages = 6
pageControl.currentPage = 0
pageControl.addTarget(self, action: #selector(pageControlTapHandler(sender:)), for: .touchUpInside)
...
func pageControlTapHandler(sender:UIPageControl)
print("currentPage:", sender.currentPage) //currentPage: 1
【讨论】:
以上是关于UIPageControl 没有在 valueChanged 上调用选择器的主要内容,如果未能解决你的问题,请参考以下文章
UIPageControl + UIScrollView 没有正确计算页面
如何将 UIPageControl 与 iCarousel 一起使用?