0

UIButton クリックで開く UIView があります。この特定のビューとそのサブビューを除く他のすべてのスーパービューのユーザー操作を無効にしたいのですが、どうすればできますか? このビューをユーザーのタッチに応答する唯一のビューにするためです。

ありがとう!

4

2 に答える 2

5

コメントに同意します。おそらく、ビューのすべての兄弟を無効にしたいでしょう...(編集して、ある時点でそれらを有効に戻すことができます)

- (void)setSiblings:(UIView *)view enabled:(BOOL)enabled {

    for (UIView *sibling in view.superview.subviews) {
        if (sibling != view) sibling.userInteractionEnabled = enabled;
    }
}
于 2012-11-10T19:32:51.197 に答える
3

すでに回答を受け入れていることは承知していますが、より良い (そして簡単な) アプローチは、新しいビューをフルスクリーンで表示することです。明確な背景で新しいビューを作成します。次に、実際のビューをサブビューとしてこのフル スクリーン ビューに追加します。この方法では、この新しいビューを表示するために既存のビューをいじる必要はありません。その背後にあるものはすべて見ることができますが、タッチ イベントはクリアなフルスクリーン ビューによってブロックされます。

次に、この全画面ビューを削除すると (フェード アウト アニメーション?)、既存のすべてのビューを再びいじる必要はありません。

別のビューを表示するためだけに既存のビューを変更する必要はありません。そして、これらの既存のビューの 1 つが実際に相互作用を無効にする必要がある場合はどうなるでしょうか? 「モーダル」ビューを閉じると、相互作用が有効になります。

于 2012-11-10T23:23:02.153 に答える