是否有一种方法可以检测到UISegmentedControl中某个段的第二次单击?我发现:
Detect second click on a segment
但是,报告指出:
如果将分段控件设置为具有瞬间样式,则当用户触摸该控件时,分段将不会显示为选定的(蓝色背景)。公开按钮总是瞬间的,不会影响实际的选择。
是否有一种方法可以检测第二次单击以及触发选择操作,并将段显示为选定的?
如果没有直截了当的方法,我想的是,我首先将momentary标志设置为YES,然后在每次单击时手动更新选择状态,然后还需要更新/取消选择其他段。
谢谢
发布于 2013-11-12 01:23:52
解决方案是拥有一个自定义的UISegmentedControl子类,并按照下面的方式检查它。
-(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和更高版本中不起作用的堆栈溢出解决方案。
发布于 2016-04-26 15:00:29
要使特定的段再次单击是不可能的,但是您可以使用segmentControl重新设置整个UISegmentedControlNoSegment。
[self.segmentCtrlOutlet setSelectedSegmentIndex:UISegmentedControlNoSegment];当您单击UISegmentedControl的某个特定段时,您需要做的是将上面的代码放在执行该代码的位置。
就像。在我的项目中,当我点击一个段时,UIPopoverController打开,在其中我有UIPicker,所以我在UIPicker委托方法"didSelectRow“中使用了上面的代码。
https://stackoverflow.com/questions/19919120
复制相似问题