Перетащите UIView, не отключая его дочерние элементы управления iPhone / iPad - PullRequest
4 голосов
/ 12 июля 2011

У меня есть элемент управления UIView (белый прямоугольник на изображении)

enter image description here

Более того, я могу перетащить этот элемент управления ...

enter image description here

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

enter image description here

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

В любом случае проблема при загрузке этого nib-файла заключается в том, что я больше не могу перетаскивать верхний UIView. Из-за этого я изменил:

enter image description here

для:

enter image description here

в UIView подпредставления. Другими словами, UIView файла пера, который я помещаю в UIView с белым фоном.

и когда я это сделал, я смог перетащить элемент управления, но элементы управления внутри подпредставления больше не работают. Я также попытался поместить метод touchesMoved в подпредставление, но когда я это делаю, приложение ведет себя странно. Кроме того, цель помещения файла пера в элемент управления UIView состояла в том, чтобы избежать повторения одной и той же функции перетаскивания для нескольких файлов пера.

Мне действительно нужно создать приложение, такое как презентация Power Point, и мне нужно изменить слайд, когда пользователь слайдит UIView, и если его шнуры, например, меньше x, тогда я загружаю следующий слайд (файл пера) в этом контроллер uiview. Может быть, есть более простой способ сделать то, что мне нужно, но если я получу это перетаскивание, я сделаю это, потому что мне нужно будет выполнить эту функцию только один раз.

1 Ответ

1 голос
/ 12 июля 2011

Вы должны оставить флаг UserInteractionEnabled для своего подпредставления, если хотите, чтобы оно отвечало на события.

Один из способов добиться этого - выполнить перетаскивание с помощью UIGestureRecognizer.

UIPanGestureRecognizer идеально подходит для этого ( UIGestureRecognizer в apple )

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

UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc]
                                      initWithTarget:self action:@selector(handlePanGesture:)];
panGesture.minimumNumberOfTouches = 1;
[draggableSubview addGestureRecognizer:panGesture];
[panGesture release];

Затем в методе handlePanGesture вы выясните, как далеко пользователь панорамировал, используя метод translationInView распознавателя, который ему передали, и соответствующим образом переведут подпредставление.

...