首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UISegmentedControl:如何检测当前段的点击?

UISegmentedControl:如何检测当前段的点击?
EN

Stack Overflow用户
提问于 2013-11-12 01:11:17
回答 2查看 4.1K关注 0票数 10

是否有一种方法可以检测到UISegmentedControl中某个段的第二次单击?我发现:

Detect second click on a segment

但是,报告指出:

如果将分段控件设置为具有瞬间样式,则当用户触摸该控件时,分段将不会显示为选定的(蓝色背景)。公开按钮总是瞬间的,不会影响实际的选择。

是否有一种方法可以检测第二次单击以及触发选择操作,并将段显示为选定的?

如果没有直截了当的方法,我想的是,我首先将momentary标志设置为YES,然后在每次单击时手动更新选择状态,然后还需要更新/取消选择其他段。

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-12 01:23:52

解决方案是拥有一个自定义的UISegmentedControl子类,并按照下面的方式检查它。

代码语言:javascript
复制
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    current = self.selectedSegmentIndex;
    [super touchesBegan:touches withEvent:event];
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    [super touchesEnded:touches withEvent:event];

    if (current == self.selectedSegmentIndex)
        [self sendActionsForControlEvents:UIControlEventValueChanged];
}

我有一个其他的解决方案都是在touchesBegan中,但是它不再在iOS 7中工作,还有其他在iOS 6和更高版本中不起作用的堆栈溢出解决方案。

票数 16
EN

Stack Overflow用户

发布于 2016-04-26 15:00:29

要使特定的段再次单击是不可能的,但是您可以使用segmentControl重新设置整个UISegmentedControlNoSegment。

代码语言:javascript
复制
[self.segmentCtrlOutlet setSelectedSegmentIndex:UISegmentedControlNoSegment];

当您单击UISegmentedControl的某个特定段时,您需要做的是将上面的代码放在执行该代码的位置。

就像。在我的项目中,当我点击一个段时,UIPopoverController打开,在其中我有UIPicker,所以我在UIPicker委托方法"didSelectRow“中使用了上面的代码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19919120

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档