UISwitchをクリックした際に、自動切り替えをオフにしますか?

StackOverflow https://stackoverflow.com/questions/1690715

  •  18-09-2019
  •  | 
  •  

質問

だから私は、カスタムTableViewCellを作成した、とペン先に私がUISwitchを置きます。私も何にもそれをフックアップしていた前に、私はシミュレータでそれを実行し、それをクリックした場合、それは、アニメーションなどでオフからオンに切り替えます。

私は、ユーザーが唯一の特定の条件が真であるとき、オフからオンに変更することが許可されている機能を追加しようとしています。私は、ユーザーがスイッチに触れたときに条件が成立しているとき、それはそう、それはチェックしたい、そしてそれがない場合、スイッチは移動しません。

私は、ユーザーが内部まで触れた場合、それは私の機能を実行しますIBActionを設定しました。 My機能はこれです:

if([on_switch isOn])
    {
        if([my_switch canSwitchOn])
        {
            NSLog(@"SWITCHED ON SUCCESSFULLY");
            [on_switch setOn:TRUE animated:TRUE];
        }
        else
        {
            NSLog(@"SWITCHED ON UNSUCCESSFULLY");
                        //Put in popup here
        }
    }
    else
    {
        [[ClassesSingleton sharedSingleton] classSwitchedOff:cell_index];
        [on_switch setOn:FALSE animated:TRUE];
    }

しかし、関係なく、私は何をすべきか、そのスイッチが、私はそうすることに何の指示を与えていないにも関わらず、反転しません。私はそれは私がそれまで何かを夢中のだ前であっても、それがそうする原因とオートフリップだと確信しています。それをオフにする方法はありますか?

ありがとうございます。

役に立ちましたか?

解決

何をする必要があなたのuserInteractionEnabledにFalseにUISwitchプロパティを設定されています。

あなたが出回っあなたが所有しているクラスにdelared IBOutletにInterface Builderで接続をしていた場合、あなたはこのようなコードでそれを設定することができます。

mySwitch.userInteractionEnabled = NO;
以下に示すように、

また、チェックボックスを選択することで、Interface Builderでプロパティを直接設定することもできます(ただし、あなたのアプリで、あなたの条件ロジックを実装するために、とにかくIBOutletまでボタンを配線する必要があるとしています。) altテキストhttp://www.clixtr.com/photo/ef06c1f7- 8cca-40cd-a454-5ca534ceb9feする

他のヒント

私はあなたが以下のようなものが必要になると思います

// Somewhere just after the creation of _switch
[_switch addTarget:self action:@selector(switchValueDidChange:) forControlEvents:UIControlEventValueChanged];

// Target/Action method
- (void)switchValueDidChange:(UISwitch *)sender {
    if(sender.on && [self canSwitchOn] == NO){
        [sender setOn:NO animated:YES];
        // Popup
    }
}

あなたが抱えている問題は、スイッチがすでにそれがタッチアップで状態だコミットしていることです。それは(私はわからないんだけど、テストされたことがない)場合ではないときは、スイッチは、現在のありませんの上であるかどうかを確認する必要があります。ユーザがスイッチを切り替えることは許されなかった場合、コードのこのビットが状態を元に戻します。

より良い方法は、コントロールを無効にすることですが、多分それはあなたがこのケースで欲しいものではありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top