Называть прикосновения другого объекта начать iOS - PullRequest
3 голосов
/ 03 декабря 2011

Допустим, у меня есть view1, который перехватывает события касания, и view2, который не является.

Может ли view1 передать эти события в view2 и вызвать [view2 touchesBegin] [view2 touchesMoved] ... и т. Д.

1 Ответ

5 голосов
/ 03 декабря 2011

Да, иногда, может быть.Техника, о которой вы спрашиваете, известна как пересылка событий .Я отправлю вас в раздел Переадресация сенсорных событий в Руководстве по обработке событий для iOS , в котором говорится следующее:

Классы фреймворка UIKit не предназначены для получения прикосновений, которые не связаны с ними;в программных терминах это означает, что свойство view объекта UITouch должно содержать ссылку на объект каркаса для обработки касания.Если вы хотите условно пересылать касания другим респондентам в вашем приложении, все эти респонденты должны быть экземплярами ваших собственных подклассов UIView.

Итак, если вы хотите пересылать события из одного представленияс другой стороны, и оба представления являются экземплярами вашего собственного подкласса UIView, переадресация событий может работать для вас.Если ваш view2 является экземпляром класса UIKit, то, скажем, UIScrollView или UITextView, вы не должны удивляться, сталкиваясь с проблемами.И даже если он работает сейчас, он может легко сломаться в будущем.Чуть дальше в тексте этот раздел утверждает это более просто:

Не пересылать события объектам инфраструктуры UIKit.

Я бы настоятельно рекомендовал вам прочитатьВесь раздел - есть несколько полезных советов и пример, который может помочь, если вы решите использовать переадресацию событий.

...