2011-08-04 8 views
0

uiviewの親ビューを使用しています。オーバーライドされたタッチが開始され、終了メソッドをタッチしました... UIButtonをビューのサブビューとして追加してタッチしたときボタンタッチダウンイベントが検出され、関連付けられたメソッドが呼び出されますが、オーバーライドされたtouchbeganメソッドは呼び出されません。ボタンが押されたときにUIButtonの下でUIVuttonのタッチを検出します。

ボタンをタッチすると、タッチダウンイベントとtouchBeganメソッド両方のウインドウを同時に呼び出す必要があります... UIbuttonはそのスーパービュー、つまりuiview .....にタッチを渡していませんか? これを行うにはどうすればいいですか? おかげで

答えて

1

私は2つの異なるビューで同時に2つのtouchesBeganイベントを呼び出すことが正確にどのようにわからないんだけど、あなたはおそらくUIViewhitTest:withEvent:メソッドをオーバーライドします。これにより、のタッチイベントがUIButtonの前に表示され、の前にボタンが表示されます(ヒットテストの動作は、windowから最前面に表示されます)。

- (UIView*)hitTest:(CGPoint)point withEvent:(UIEvent *)event 
{ 
    if (passToSubviews) 
    { 
     return [super hitTest: point withEvent: event]; 
    } 

    // otherwise stop the subview receiving touches 
    if ([super hitTest: point withEvent: event]) 
    { 
     return self; 
    } 

    return nil;  
} 

多分これは助けることができる...

EDIT:

だけの推測が、あなたは試みることができる:

- (UIView*)hitTest:(CGPoint)point withEvent:(UIEvent *)event 
{ 
    UIView* hitSubview = [super hitTest: point withEvent: event]; 
    if (hitSubview) 
    { 
     [self doTouchedInStuff]; 
     return hitSubview; 
    } 

    return self;   
} 

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    [self doTouchedInStuff]; 

    [super touchesBegan:touches withEvent:event]; 
} 
+0

passToSubviewを?このメソッドをオーバーライドするだけで違いが生まれますか? – Tornado

+0

はいこれにより、タッチが検出される場所を定義できますが、同時に2つの異なるビューでタッチを検出することはできません – Sam

+0

すべて完了....ありがとう – Tornado

関連する問題