сквозные события оверлея интерфейса iphone

http://www.davidhomes.net/question.gif

Я новичок в разработке для iphone (‹3 месяца в свободное время) и начинаю разработку своего второго приложения.

Из изображения я добавляю несколько UIViews в качестве подпредставлений к моему основному UIViewController.view, количество добавляемых представлений зависит от данных, выбираемых пользователем.

Каждое представление содержит несколько элементов управления, метку, UITextField и Horizontal UIViewPicker.

Для простоты я поместил здесь (ОЧЕНЬ ГРУБЫЙ) мокап всего с двумя кнопками.

Поскольку я хочу улучшить графический интерфейс, я хочу наложить UIViewImage в качестве верхних подвидов добавленного UIView, что-то вроде изображения.

Вопрос в передаче событий объектам ниже него. Я где-то читал, что одним из способов было использование отсечения, но на самом деле форма более сложная, чем просто овальная рамка.

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

Любые идеи о том, как лучше всего это сделать? Любые ссылки на учебник или рецепт в Интернете?

Ваша помощь приветствуется

спасибо Дэвид


person David Homes    schedule 22.07.2009    source источник


Ответы (1)


Вы протоколы смотрели? Вы можете определить протоколы для своих представлений или объектов, и пользователи этого объекта (например, подпредставления ниже) могут реализовать протокол, установить себя в качестве делегата объектов, и когда происходят действия, они будут уведомлены через протоколы. Так например

AboveView объявит протокол, который объявляет методы, когда определенный жест был обнаружен этим представлением, поэтому что-то вроде -(void)didMakeCircleGesture... в качестве свойства у нижнего представления будет делегат, поэтому в вашем методе, который фактически определяет жест, у вас будет в конце что-то вроде

[delegate didMakeCircleGesture];

в свою очередь, делегат представляет собой вид внизу или что-то в этом роде, и он будет соответствовать протоколу, определенному AboveView, и как его часть он должен будет объявить метод didMakeCircleGesture, поэтому в результате, когда кто-то делает круговой жест в AboveView нижний вид, который соответствует протоколу, будет проинформирован о событии, и он может предпринять соответствующие действия

person Daniel    schedule 22.07.2009
comment
вау, я реализовал протоколы, но для более простых вещей, таких как панель поиска или uipickerview, я понимаю ваше объяснение, хотя на данный момент оно кажется мне немного сложным (учитывая мой опыт прямо сейчас), тем более что у меня есть более одного объекта ниже меня также необходимо будет определить, где в AboveView произошло событие. Попробую немного поиграть с этим, но, поскольку я занимаюсь этим как хобби, может закончиться тем, что я выберу «куриный путь» (установив эти 4 изображения по углам). Тем не менее, большое спасибо за ваш ответ, давайте посмотрим, смогу ли я получить больше идей здесь, с уважением, Дэвид - person David Homes; 23.07.2009