2012-03-23 14 views
4

XCode 4.2のシングルビューiOSテンプレートから、2番目のビューを.xibに追加しました。メインビューの 'Super'ボタンと 'Sub'ボタンをオンにしました。サブビュー私は両方のボタンをクリックできるようにしたいと思います。ビューコントローラのインタフェースでサブビューを追加した後にSuperViewでタッチを取得

、私が追加しました:

IBOutlet UIView *subView; 

はその後、私のビューコントローラのviewDidLoadメソッドでは、私が追加:[スーパーのviewDidLoad]後

[self.view addSubview:subView]; 

を。

サブビューの背景が「クリア」で、両方のウィンドウが「ユーザー対話が有効」に設定されています。

アプリケーションを実行すると、[サブ]ボタンのみがクリック可能です。私は 'スーパー'ボタンを見ることができますが、タッチを受けているようではありません。アップルのドキュメント(ビューの透明な領域は触れることができるはずです)からわかる限り、デフォルトの動作でなければなりません。

答えて

3

これは起こりません。別のビューの前にビューを置くと、背中のビューは接触を受けません。

fronビューでユーザー対話を無効にすることができます。これにより、バックビューはタッチを受け取ります。

あなたはフロントビューとバックビューをクリック可能にしたいと思うのですが、この場合に何をする必要がありますかはタッチを受けてバックビューに送信し、バックビューで処理します。

あなたが何をしようとしているのか分かりませんが、おそらくそれよりも最適な選択肢を作ったと思います。

あなたはstackoverflowの中で、ここでこの質問を見てみることができます: detect touch on a view behind another view?

EDIT:

をあなたはtouchsを送信するために多くのオプションを持っています。

あなたは(それが良いオプションではありません)のような何かを行うことができます。ビューは、ボタンをカバーしないように

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{ 
    for (UITouch *touch in touches) {   
     for(UIView* v in self.view.subviews){ 
      if([v pointInside:[touch locationInView:self.view] withEvent:event]){ 
       if ([v isKindOfClass:[UIButton class]]) { 
        [(UIButton*)v sendActionsForControlEvents:UIControlEventTouchUpInside]; 
       } 

      } 
     } 
    }  
} 

また、ビューのフレームを編集することができます。

0

は、コンテンツのサイズ2番目の図である)。

[self.view addSubview:yourSubview]; 
[self.view bringSubviewToFront:yourButton]; 
あなたは自分の創造性を使用する必要が

また、のようなものをやって新しいサブビューの前に、あなたのボタンをもたらすことができます(ボタン)またはビュー全体のサイズ?サブビューを320x480ではなくオブジェクトのサイズにするほうが簡単です。それをサブビューとして追加した後にcgrectmakeで整列させます。

さまざまな接触をバブリングするよりも/簡単/簡単です。これは少し悪夢になります。

+0

ビュー全体のサイズです。このプロジェクトでは、小さな画面にすることができますが、フルスクリーンオーバーレイのためにタッチを適切にバブルアップする方法を学びたいと思います。 –

関連する問題