В программировании iPhone, должно ли подпредставление менять свой собственный кадр и центр или суперпредставление меняет их? - PullRequest
0 голосов
/ 21 сентября 2011

Мне нужно, чтобы пользователь мог перетаскивать подпредставление по экрану, чтобы изменить его положение.Я знаю, что это можно сделать в любом случае, но предпочтительнее ли это?А почему?

Ответы [ 2 ]

1 голос
/ 21 сентября 2011

Основываясь исключительно на концепции MVC, все, что отвечает за это представление, вероятно, должно обрабатывать средство распознавания жестов панорамирования. По крайней мере, так я и делаю. Само представление не должно заботиться или знать, что оно перемещается.

Теперь, для чего-то вроде масштабирования или прокрутки, которое действительно имеет отношение к представлению (например, UIScrollView имеет свойство panGestureRecognizer). Но в этом случае это часть функциональности представления, поэтому представлению имеет смысл управлять этим распознавателем жестов.

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

0 голосов
/ 21 сентября 2011

Если вы используете iOS 3.2 или выше, загляните в UIPanGestureRecognizer.

// **** other Code ****
UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panGesture:)];

panGesture.delegate = self;
[dragView addGestureRecognizer:panGesture];
[panGesture release];
}

- (void)panGesture:(UIPanGestureRecognizer *)gestureRecognizer 
{
    CGPoint location = [gestureRecognizer locationInView:parentView]; // The view the of the drag item is in
    gestureRecognizer.view.center = location;
}

Все это делается из памяти, но должно быть что-то вроде этого

...