10

UISegmentedControl のセグメントで 2 回目のクリックを検出する方法はありますか? 私が見つけた:

セグメントの 2 回目のクリックを検出する

ただし、次のように述べられています。

セグメント化されたコントロールにモーメンタリ スタイルを設定すると、ユーザーがセグメントに触れたときにセグメントが選択された状態 (青色の背景) として表示されません。開示ボタンは常に一時的なものであり、実際の選択には影響しません。

2 回目のクリックを検出し、選択アクションをトリガーしてセグメントを選択済みとして表示する方法はありますか?

それを行う簡単な方法がない場合、私が考えていたのは、最初にmomentaryフラグを に設定しYES、クリックするたびに選択状態を手動で更新することですが、他のセグメントも更新/選択解除する必要があります。

ありがとう

4

2 に答える 2

16

解決策は、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 以降では機能しない他のソリューションもあります。

于 2013-11-12T01:23:52.040 に答える