0

私の画面にはそのようなビューがいくつかあります

__________________
|          _____  |
|          |    | | //viewX is a video screen
|          |    | | 
| viewX    | vY | | //viewY is a custom uiview i created.
|          |____| | //it contains a method which i would like to call that toggles
|_________________| //the hidden property of this view. and when it hides, a little
|                 | //button is replaced no the top right corner on top of viewX
| viewZ           | //the video layer
|                 |
|_________________| //viewZ is a view containing many square views - thumbnails.

私の質問は、ユーザーが画面に触れたビューに関係なくタッチイベントを認識するようにタッチイベントを登録する方法がわかりません..atmはその中の各ビューのタッチイベントを処理しています. だからすべてうまくいく...

ただし、私がやろうとしているのは、ユーザーが画面上の他の場所をタップするとviewYで、viewYクラスでそのメソッドを呼び出すことでviewYが消えることです。

この viewY クラスはインスタンス化されており、xib ファイルが添付されていません。uiview は、viewY クラスでプログラム的に作成されます。viewY 動作のこのクラス全体は、viewX (ビデオ ビュー) でインスタンス化されます。

私の上司は、デリゲートを追加すると言います..私は今それを行う方法の手がかりを持っています...何か助けはありますか?

とにかく、本当にシンプルにして、どのクラスから呼び出しても REMOVE VIEW と言うことができるのでしょうか?

また、他の人がこれらのファンキーな矢印を使用してこれを達成しているのを見たことがあります -> ... <- など。

ああ、私は私の質問を非常に複雑にしたと思いますが、私は本当にそれが単純なものであることを意味し、それは簡単な方法で行うことができることを知っています!

4

2 に答える 2

1

電話しないだろう

[viewY hideThisViewAndShowLittleButton];

正しい仕事をする?viewY を削除したい場合は、次のように呼び出します。

[viewY removeFromSuperview];

viewYからにアクセスするviewZには、viewZが にアクセスできる場合、に返すviewXメソッドを定義できます。のようなもの(の実装ファイル内:viewXviewYviewX

- (UIView*)viewY {
   return <viewX_knows_which_value_to_return>;
}

に関してはviewX_knows_which_value_to_return、それviewYが唯一のサブビューである場合、次のことができます。

[self.view.subviews lastObject];

(注: ここでは、実際には viewX が UIView ではなくビュー コントローラーであると想定しています)。

于 2012-07-04T15:23:29.563 に答える
0

それは良い方法です。この方法で、非表示またはアルファを追加することもできます。

vY.hidden = YES;

元に戻すには

vY.hidden = NO;
于 2012-07-04T15:27:41.217 に答える