UIImageView范围。从另一个班级访问

时间:2011-09-02 18:49:02

标签: iphone ios cocoa-touch ipad uiimageview

以下是我正在使用的代码的一部分:http://pastie.org/2472364

我已经想出了如何从以编程方式创建的同一个类文件中的另一个方法访问UIImageView。

但是,我想知道如何从LetterTiles.m文件中访问相同的UIImageView,特别是在touchesMoved方法中。我在样本中编写代码的方式,只有当调用otherMethod时,如果它们在彼此的顶部,它们才会显示帧是否相交。当然,我需要能够检查视图是否在实际的touchesMoved方法中相交。我确信这是非常容易的,但我不知道该怎么做。

提前感谢您提供的任何帮助。

2 个答案:

答案 0 :(得分:1)

从您的评论中,使用您已有的代码,我会沿着这条路走下去。这不是我个人所做的,仅仅是FYI。结构听起来像你想要的那样有点摇摇欲坠。

在touchesBegan函数中创建占位符UIImageView,然后在用户停止移动图像时检查它们是否相交。

#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]];
     }
}

答案 1 :(得分:0)

  1. 制作名为ViewMoved的协议,其中包含一个方法otherMethod。

  2. 在myMainViewController中实现

  3. 在LetterTiles中获取ViewMoved类型的委托属性。

  4. 在myMainViewController中创建LetterTiles类型的新对象时指定self。

  5. 在触摸的每次移动中,委托代理人的方法,并检查LetterTiles类型的任何视图是否相交。

  6. 当移动任何视图时,这将捕获任何交叉点.....

    如果上述内容与您的问题不符,请在此处写下......