UIImageView сфера.Доступ из другого класса - PullRequest
0 голосов
/ 02 сентября 2011

Вот часть кода, с которым я работаю: http://pastie.org/2472364

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

Однако мне было интересно, как я получу доступ к тому же UIImageView из файла LetterTiles.m, в частности из метода touchesMoved. То, как я написал код в примере, будет показано, только если фреймы пересекаются, если они находятся друг над другом при вызове otherMethod. Конечно, я должен быть в состоянии проверить, пересекаются ли представления в фактическом методе touchesMoved. Я уверен, что это что-то супер легкое, но я просто не уверен, как это сделать.

Заранее спасибо за любую помощь, которую вы можете мне оказать.

Ответы [ 2 ]

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

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

Создайте заполнитель UIImageView в функции touchesBegan, затем проверьте, не пересекаются ли они, когда пользователь прекращает перемещать изображение.

#import "LetterTiles.h"

@implementation LetterTiles
@synthesize placeHolder;

- (void) touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event {
    // Retrieve the touch point (I consider this useful info to have, so I left it in)
    CGPoint pt = [[touches anyObject] locationInView:self];
    startLocation = pt;

    // Create a place holder image wherever you want
    [self setPlaceHolder:[[[UIImageView alloc] initWithFrame:CGRectMake(39, 104, 70, 70)] autorelease]];
    [newImage setImage[UIImage imageNamed:@"placeHolder.png"]] autorelease];


}

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

     [self setCenterPoint:pt];
}

-(void)touchesEnded:(NSSet*)touches withEvent:(UIEvent*)event {
     LetterTiles *movingTile = self;

     if (CGRectIntersectsRect([movingTile frame], [placeHolder frame])) {
         NSLog(@"Touched");

         [self setFrame:[placeHolder frame]];
     }
}
0 голосов
/ 02 сентября 2011
  1. Создайте протокол с именем ViewMoved, который будет содержать один метод otherMethod.

  2. реализует это в myMainViewController

  3. takeсвойство делегата типа ViewMoved в LetterTiles.

  4. Назначить себя при создании нового объекта типа LetterTiles в myMainViewController.

  5. При каждом движениикоснитесь вызова oherMethod для делегата и проверьте, пересекаются ли какие-либо виды типа LetterTiles.

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

Если приведенное выше не соответствует вашему вопросу, напишите здесь ......

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