Как передать касание пользователя от одного объекта другому? - PullRequest
0 голосов
/ 12 сентября 2011

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

Скриншот того, как это выглядит:

Screenshot of application

Поэтому, когда пользователь перетаскивает одну фотографию, я хочу, чтобы она уменьшила непрозрачность и дала пользователю перетаскиваемое изображение на его пальце, которое снова исчезнет, ​​если он уронит его за пределы какого-либо изображения.

Способ, которым я разработал этоследующие.Я установил UIPanGesture для этих UIImageView s как:

for (UIImageView *imgView in editPhotosView.subviews) {
        UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(photoDragged:)];
        [imgView addGestureRecognizer:panGesture];

        imgView.userInteractionEnabled = YES;

        [panGesture release];
}

Тогда мой photoDragged: метод:

- (void)photoDragged:(UIPanGestureRecognizer *)gesture {

    UIView *view = gesture.view;
    if ([view isKindOfClass:[UIImageView class]]) {
        UIImageView *imgView = (UIImageView *)view;
        if (gesture.state == UIGestureRecognizerStateBegan) {
            imgView.alpha = 0.5;

            UIImageView *newView = [[UIImageView alloc] initWithFrame:imgView.frame];
            newView.image = imgView.image;            
            newView.tag = imgView.tag;
            newView.backgroundColor = imgView.backgroundColor;
            newView.gestureRecognizers = imgView.gestureRecognizers;

            [editPhotosView addSubview:newView];            
            [newView release];
        }
        else if (gesture.state == UIGestureRecognizerStateChanged) {
            CGPoint translation = [gesture translationInView:view.superview];
            [view setCenter:CGPointMake(view.center.x + translation.x, view.center.y + translation.y)];
            [gesture setTranslation:CGPointZero inView:view.superview];
        }
        else { ... }
    }
}

Таким образом, как вы видите, я добавляю новый UIImageView с непрозрачностью 0,5 на том же месте, что и исходное изображение, когда пользователь начинает его перетаскивать.Таким образом, пользователь перетаскивает оригинальное изображение вокруг.Но я хочу сделать , чтобы скопировать оригинальное изображение, когда пользователь перетаскивает его, создать «перетаскиваемое» изображение и передать его пользователю для перетаскивания.

Но для этого я должен передать пользователю прикосновение к вновь созданному «перетаскиваемому» UIImageView.Хотя оно фактически установлено на исходное изображение (то, к которому пользователь прикасается, когда начинает перетаскивать).

Поэтому мой вопрос: Как передать касание пользователя другому элементу? .

Надеюсь, это имеет смысл.Спасибо за вашу помощь!

Ответы [ 3 ]

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

Может быть:

[otherObject sendActionsForControlEvents:UIControlEventTouchUpInside];

Или любой другой UIControlEvent

0 голосов
/ 02 января 2012

В конце я решил действительно перетащить оригинальное изображение и оставить копию в исходном месте.

Я решил проблему с распознавателями жестов, которые у меня были, воссоздав их и присвоив их«Копировать», как предложил PragmaOnce.

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

Что ж, вы можете передать объект UIPanGestureRecognizer другому объекту, создав в другом объекте метод, который принимает распознаватель жестов в качестве параметра.

- (void)myMethod:(UIPanGestureRecognizer *)gesture
{
    // Do stuff
}

И вызов из вашего текущего распознавателя жестов, используя ....

[myOtherObject myMethod:gesture];

Не совсем уверен, что я полностью понимаю ваш вопрос. : - /

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...