2010-11-03 4 views
1

Im не слишком информирован о вшивом песчаных модифицирующем Ответчике цепи, так что если это тупые пожалуйста не колотить меня;)UIResponder цепь вопрос

в основном у меня есть 2 вид стеки (синяя) как подвид родителя (красный)

они оба занимают полный кадр родительского элемента в один момент времени, поэтому очевидно, что только на вершине появляются события касания, которые перемещаются вверх по течению к родительскому виду (красный) и к окну.

В некоторых случаях я хочу, чтобы сенсорный ввод был подхвачен доступным детским представлением «другого» стека представлений. То есть, представление, которое будет получать эти входы, если текущий верхний вид имеет userinteractionenabled, установленный на no.

Настройка userinteractionenabled работает, но я чувствую, что это грязный хак. Суть в том, что это представление topmot в основном прозрачно, и я хочу, чтобы события, когда они касались в указанном регионе, попадали в другой стек.

вот изображение, которое поможет визуально объяснить, и имейте в виду, что оба синих представления - это 100% родительского.

http://c.crap.ps/35a5

ответ

3

Вы можете переопределить hitTest:withEvent: в каждом из видов контролировать, кто получает «потреблять» на ощупь.

В вашем примере я предполагаю, что зеленоватые области являются областями, которые вы хотите потреблять событиями касания. Если это так, то попробуйте это для метода Трассировка:

-(UIView*) hitTest:(CGPoint)point withEvent:(UIEvent *)event { 
    UIView *hitView = [super hitTest:point withEvent:event]; 
    return (hitView == self) ? nil : hitView; 
} 

Этот метод проверяет, если сенсорная попадает любой из подвидов. Если это так, то это позволяет этому подзону потреблять прикосновение, в противном случае оно позволяет касанию продолжать работу по иерархии.

+0

они есть, но они неизвестны для представления в настоящее время событий. Я могу создать ссылку на «другой» контроллер, у которого есть подпункты, в которых я хочу, чтобы события касания взаимодействовали, но я не точно уверен в правильном пути подойти к этому. – drunknbass

+0

Сохранение ссылок на представления друг в друге не должно быть необходимым. Как и где вы определяете, когда представление «подходит» для касаний? Эта логика должна быть легко подключена к методу «hitTest», о котором я упоминал. –

Смежные вопросы