Обнаружение касания uiview под кнопкой UIB при нажатии кнопки - PullRequest
0 голосов
/ 04 августа 2011

я использую родительский вид uiview .... началось сенсорное касание, а сенсорное завершение ... когда я добавил UIButton в качестве подпредставления в виде и обнаружил прикосновение к событию касания кнопки, и был вызван связанный метод ... но перезапущенный метод touch не вызван ...

Что я хочу, так это когда я касаюсь кнопки, метод, связанный с событием приземления, и метод uiview touchBegan, которые вызываются одновременно ... UIbutton не передает касание своему суперпредставлению, т.е. uiview .....? Есть идеи, как это сделать? Спасибо

1 Ответ

2 голосов
/ 04 августа 2011

Я не уверен, как именно вызвать два события touchesBegan одновременно для двух разных представлений, но вы, вероятно, хотите переопределить метод hitTest:withEvent: для UIView.Это позволит вам отследить событие касания в представлении под UIButton до того, как перейдет к кнопке (hitTests работает от 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;     
}

Может быть, это может помочь ...

РЕДАКТИРОВАТЬ:

Просто предположение, но вы можете попробовать:

- (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];
} 
...