UIImageview и TouchesEnded Event - PullRequest
       1

UIImageview и TouchesEnded Event

0 голосов
/ 04 декабря 2011

Я пытаюсь написать простую программу, которая берет 5 изображений и позволяет перетаскивать их из нижней части экрана и привязывать к 5 другим изображениям сверху в любом порядке.Я подклассифицировал UIImageView с новым классом и добавил, что касания начинаются, касания перемещаются и касания заканчиваются.Затем на моем главном контроллере просмотра я размещаю изображения и устанавливаю их класс в качестве нового подкласса, который я создал.Движение прекрасно работает, на самом деле я NSLogging координаты в пользовательском классе.

Проблема в том, что я пытаюсь выяснить, как получить эту CGpoint информацию от прикосновений в конце пользовательского класса и заставить его вызывать функцию в моем контроллере основного вида, в котором объекты изображения такя могу проверить, находится ли изображение над другим изображением.и переместите его так, чтобы он был отцентрирован на изображении над ним (защелкните на нем).

вот код в моем файле пользовательского класса m.Мой контроллер вида в основном пустой с файлом xib с 10 видами изображений, 5 из которых настроены на этот класс, а 5 являются обычными видами изображений.

#import "MoveImage.h"


CGPoint EndPoint;

@implementation MoveImage


- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    startPoint = [[touches anyObject] locationInView:self];
    }

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
    CGPoint newPoint = [[touches anyObject] locationInView:self.superview];

    newPoint.x -= startPoint.x; 
    newPoint.y -= startPoint.y;
    CGRect frm = [self frame];
    frm.origin = newPoint;
    [self setFrame:frm]; 
}

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
    UITouch *end = [[event allTouches] anyObject];
    EndPoint = [end locationInView:self];
    NSLog(@"end ponts x : %f y : %f", EndPoint.x, EndPoint.y);

} 

@end

1 Ответ

0 голосов
/ 04 декабря 2011

Вы можете написать протокол MoveImageDelegate , который затем будет реализован вашим контроллером приложения.Этот протокол будет иметь методы, которые ваш класс MoveImage может вызывать для получения своей информации.

В вашем заголовочном файле (если вы не знаете, как написать протокол)

@protocol MoveImageDelegate <TypeOfObjectsThatCanImplementIt> // usually NSObject
// methods
@end

, тогда выможет объявить переменную экземпляра типа id, но при этом компилятор может распознать, что эта переменная отвечает на ваши селекторы делегатов (так что вы можете кодировать без этих надоедливых предупреждений).Что-то вроде:

@interface MoveImage : UIImageView
{
 id <MoveImageDelegate> _delegate;
}

@property (assign) id <MoveImageDelegate> delegate;

Наконец:

@implementation MoveImage

@synthesize delegate = _delegate;

И ваш делегат завершен.

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