Обнаружение касаний, которые начались вне поля зрения

Есть ли способ обнаружить прикосновения, когда жест начался за пределами текущего представления?

Пример:
У меня есть маленькое представление, в котором я обнаруживаю касания.
Пользователь начинает двигать пальцем по экрану, начиная с экрана, а затем входит в него, не поднимая палец.
Когда палец входит в представление, view не получает никаких событий касания.


person LK.    schedule 02.12.2010    source источник


Ответы (2)


Переопределите pointInside:withEvent: в своем представлении, и это должно сработать, хотя точка должна находиться в родительском представлении, а дочернее представление должно быть видимым и иметь возможность взаимодействия с пользователем.

person Ertebolle    schedule 02.12.2010
comment
Извините, я не вижу, что это решает... Какое представление должно иметь это? Дочернее или родительское? - person LK.; 02.12.2010
comment
Дочерний вид - он вернет YES для координат в любом месте области, из которой он должен обнаруживать прикосновения. (для начала вы можете просто возвращать YES все время и видеть, что представление начинает получать сенсорные события - убедитесь, что у вас включен userInteractionEnabled) - person Ertebolle; 02.12.2010
comment
Я все еще не вижу, чтобы это решило проблему, когда палец переходит к другому виду, не поднимаясь — новый вид не начинает реагировать на события. - person LK.; 02.12.2010
comment
Извините, не понял, в чем проблема - в этом случае вам, вероятно, понадобится какое-то прозрачное наложение, которое отправляет сообщения в разные представления, когда в нем перемещается палец. - person Ertebolle; 02.12.2010

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

person AechoLiu    schedule 02.12.2010
comment
Я рассматриваю сценарий, в котором касание является непрерывным - началось снаружи и перетащилось в представление. - person LK.; 02.12.2010
comment
У меня есть идея. Можете ли вы использовать пользовательский вид, который покрывает весь экран и находится в фоновом режиме, пусть настраиваемый вид отвечает за все события касания и отслеживает касание, входящее в целевые представления, которые находятся над настраиваемым представлением. - person AechoLiu; 02.12.2010
comment
Когда касание входит в целевое представление, пользовательское представление может перенаправить событие касания в целевое представление с помощью сообщений tochesBegan:withEvent:, touchesMoved:withEvent: и touchesEnded:withEvent. - person AechoLiu; 02.12.2010