【问题标题】:Mutually Exclusive Toggle Behavior for Segments in UISegmentedContolUISegmentedContol 中段的互斥切换行为
【发布时间】:2025-11-26 20:05:01
【问题描述】:

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

【问题讨论】:

    标签: 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
    

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

    【讨论】:

      最近更新 更多