UISegmentedContol中段的互斥切换行为

时间:2012-07-06 09:13:32

标签: iphone objective-c ios cocoa-touch uisegmentedcontrol

是否可以通过第二次点击来取消选择UISegmentedControl的一部分?我目前正在使用UILongPressGestureRecognizer对象setSelectedSegmentIndexUISegmentedControlNoSegment。但是,我宁愿在第二次点击时取消选择所选的段。

1 个答案:

答案 0 :(得分:0)

另一种方法是继承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

以上代码可能需要进一步调整以适应各个规格。