Ios 在UICapgestureRecognitor上添加UIImageView,并使用其他UIgestureRecognitor子类操作添加的UIImageView
可能看起来我没有做作业,但我没有发现类似的问题 当使用UIApgestureRecognitor点击UIView时,我正在以编程方式创建UIImageView。然后我想在创建的UIImageView上使用/应用其他UIgestureRecognitor子类 解决这个问题的最佳方案是什么 注意:当前代码正在工作并执行我想做的事情,但我希望避免调用[self-viewDidLoad];从另一种方法看pasteImage方法 这是我的相关代码 .h文件Ios 在UICapgestureRecognitor上添加UIImageView,并使用其他UIgestureRecognitor子类操作添加的UIImageView,ios,objective-c,cocoa,uigesturerecognizer,uitapgesturerecognizer,Ios,Objective C,Cocoa,Uigesturerecognizer,Uitapgesturerecognizer,可能看起来我没有做作业,但我没有发现类似的问题 当使用UIApgestureRecognitor点击UIView时,我正在以编程方式创建UIImageView。然后我想在创建的UIImageView上使用/应用其他UIgestureRecognitor子类 解决这个问题的最佳方案是什么 注意:当前代码正在工作并执行我想做的事情,但我希望避免调用[self-viewDidLoad];从另一种方法看pasteImage方法 这是我的相关代码 .h文件 @property (retain, nonat
@property (retain, nonatomic) IBOutlet UIImageView *imageView;
@property (retain, nonatomic) IBOutlet UIImageView *character;
@property (retain, nonatomic) IBOutlet UIImage *uiImg;
.m文件
@synthesize character;
@synthesize uiImg;
- (void)pasteImage:(UITapGestureRecognizer *)t
{
imageNSArray = [NSMutableArray array];
uiImg = [UIImage imageNamed:@"homer.png"];
CGPoint loc = [t locationInView:self.view];
for (character in imageNSArray)
{
if ([character pointInside:[character convertPoint:loc fromView:self.imageView] withEvent:nil])
{
[imageNSArray removeObject:character];
[character removeFromSuperview];
return;
}
}
character = [[UIImageView alloc] initWithImage:uiImg];
character.center = loc;
NSLog(@"self.character value %@",character);
[imageNSArray addObject:character];
[self viewDidLoad];
}
- (void)viewDidLoad
{
//Tap gesture
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(pasteImage:)];
[self.previewImage addGestureRecognizer:tap];
//Pan gesture
character = [[UIImageView alloc]initWithImage:uiImg];
UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)];
pan.delegate = self;
[character addGestureRecognizer:pan];
[pan setMinimumNumberOfTouches:1];
[pan setMaximumNumberOfTouches:1];
character.center = self.view.center;
[self.view addSubview:character];
character.userInteractionEnabled = YES;
[tap release];
[pan release];
[super viewDidLoad];
}
- (void)handlePan:(UIPanGestureRecognizer *)recognizer
{
CGPoint translation = [recognizer translationInView:self.view];
recognizer.view.center = CGPointMake(recognizer.view.center.x + translation.x,
recognizer.view.center.y + translation.y);
[recognizer setTranslation:CGPointMake(0, 0) inView:self.view];
}
将您的点击和平移手势识别器设置为全局,并将其声明为viewDidLoad中的状态。然后,您可以根据需要启用或禁用它们。这样,您就不必一次又一次地声明它们。如何使它们成为全局的?通过声明它们类似于.h文件中的UIImageView属性:@property strong,非原子UIAPTgestureRecognitizer*点击;我从来没有想过要让它们全球化,所以当你说我不明白的时候。现在它正在工作。实际上,我正在考虑为此创建uiimageview的子类。不管怎样,它起作用了。非常感谢。