【问题标题】:Mutually Exclusive Toggle Behavior for Segments in UISegmentedContolUISegmentedContol 中段的互斥切换行为
【发布时间】:2025-11-26 20:05:01
【问题描述】:
是否可以通过第二次点击来取消选择UISegmentedControl 的一部分?我目前正在使用UILongPressGestureRecognizer 对象到setSelectedSegmentIndex 到UISegmentedControlNoSegment。但是,我宁愿在第二次点击时取消选择选定的片段。
【问题讨论】:
标签:
iphone
objective-c
ios
cocoa-touch
uisegmentedcontrol
【解决方案1】:
另一种方法是继承UISegmentedControl。例如:
@interface ToggleSegmentedControl : UISegmentedControl
{
NSUInteger selectedSegment;
}
@end
@implementation ToggleSegmentedControl
-(id)initWithFrame:(CGRect)frame
{
if (self = [super initWithFrame:frame])
{
selectedSegment = self.selectedSegmentIndex;
}
return self;
}
-(void)awakeFromNib
{
selectedSegment = self.selectedSegmentIndex;
}
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
if( selectedSegment == self.selectedSegmentIndex && selectedSegment!=-1)
{
self.selectedSegmentIndex= UISegmentedControlNoSegment;
selectedSegment=-1;
}
else
{
selectedSegment=self.selectedSegmentIndex;
}
}
@end
上述代码可能需要进一步调整以适应个别规格。