7

UISwitch を使用して、アプリでサブビューを呼び出して画面を表示しています。ただし、スイッチは約 60% の時間しか機能しません。コードをテストするために、スイッチを別の IBAction にフックして、スイッチの状態をコンソールに書き込みました。両方の機能が特定の時間にスイッチの状態に応答していません。つまり、両方の機能が同時にスイッチの状態を無視している場合があります。iOS7 の UISwitches でこの動作を経験した人はいますか?

- (IBAction)showHideSomeSubView:(UISwitch *)sender {
if (_mySwitch.on) {
    [self.view addSubview:someSubView];
}
else {
    [someSubVew removeFromSuperview];
}}

編集:

同じスイッチが次のアクションに接続されています。

- (IBAction)switchToggled:(UISwitch *)sender {
sender = _mySwitch;
if ([sender isOn]) {
    NSLog(@"On");
} else {
    NSLog(@"Off");
}}

どちらのアクションも、スイッチに対して同じように応答します。

4

3 に答える 3

4

私はあなたとその奇妙な行動を確認します!!!! スイッチの小さな円をドラッグするだけで、アクションが複数回呼び出されることがわかります (私の場合は最大 403 :D )。この新しい動作に関するドキュメント、ところで、見つけた場合は私にも知らせてください。

どうもありがとうございました

于 2013-10-17T15:01:44.187 に答える
3

はい、iOS 7 iPad シミュレーターの UISwitch を使用すると、switchToggled: メソッドに相当するものへの 1 ~ 12 個のコールバックが表示されます。最後のコールバックで、値が実際に変更されました。以前のコールバックでは、そうではありません。私がやっているのは、スイッチがオンかどうかに関係なくキャッシュすることです。次に、switchToggled: メソッドで、値が実際に変更されたかどうかを確認します。そうでない場合は、コールバックを無視します。これにより、ユーザーにとって正しく動作するようです。

問題はデバイスでも発生しますが、明らかに頻度は低くなります。同じ回避策がそこで機能するようです。

于 2013-10-08T03:16:21.963 に答える