gpt4 book ai didi

ios - 尝试将参数传递给点击手势的方法

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:46:03 25 4
gpt4 key购买 nike

我有一组以编程方式生成的图像。在每张图片上,我都添加了一个点击手势。我想要发生的事情是,当点击该图像时,边框会变黑。

目前,我正在尝试将参数传递给该方法,然后该方法将在数组列表中找到图像。不过,我正在努力寻找正确的语法来传递该参数

这是代码。感谢您的帮助!

    - (void)viewDidLoad
{
[super viewDidLoad];
int recents = 10;

int x = 10;

_recent.contentSize = CGSizeMake((x*120)+10,100 );
for(int i = 0; i <=recents; i ++){

_imageView = [[UIImageView alloc] initWithFrame:CGRectMake(x, 10, 90, 90)];

[_arrayImages addObject:_imageView];

NSURL *url = [NSURL URLWithString:@"http://www.vetprofessionals.com/catprofessional/images/home-cat.jpg"];
NSData *data = [NSData dataWithContentsOfURL:url];
_imageView.image = [[UIImage alloc] initWithData:data];

_imageView.layer.masksToBounds = YES;
_imageView.layer.cornerRadius = 45.0;
_imageView.layer.borderColor = [UIColor blueColor].CGColor;
_imageView.layer.borderWidth = 3.0f;
_imageView.layer.rasterizationScale = [UIScreen mainScreen].scale;
_imageView.layer.shouldRasterize = YES;
NSUInteger * count;
_imageView.tag = i;

UITapGestureRecognizer *tapGesture =
[[UITapGestureRecognizer alloc]
initWithTarget:self action:@selector(didTapImageWithGesture:)];
tapGesture.numberOfTapsRequired = 1;
[_imageView addGestureRecognizer:tapGesture];




UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(x, 110, 90, 24)];
label.text = @"Sam Stone";
label.font = [UIFont fontWithName:@"HelveticaNeue" size:12];
label.backgroundColor = [UIColor clearColor];
label.textColor = [UIColor colorWithRed:62/255.0f green:68/255.0f blue:75/255.0f alpha:1.0f];
label.textAlignment = NSTextAlignmentCenter;
[_recent addSubview:_imageView];
[_recent addSubview:label];
[_arrayImages addObject:_imageView];
x=x+110;
}


}
- (void)didTapImageWithGesture:(id)sender {

UIImageView *image;
image = [_arrayImages objectAtIndex:((UIGestureRecognizer *)sender).view.tag];
image.layer.borderColor = [UIColor blackColor].CGColor;

}

最佳答案

我可能遗漏了一些东西,但这应该更简单。我们有 N 个 ImageView 和 N 个手势识别器,每个都附加一个。手势识别器的方法签名是这样的:

- (void)didTapImageWithGesture:(UIGestureRecognizer *)gr {

// want the view?
UIImageView *imageView = (UIImageView *)gr.view;

// want the image?
UIImage *image = imageView.image;

// want the index of the imageView in the array?
// not sure why you'd want this. all it tells you is the z-order
NSInteger index = [_arrayImages indexOfObject:imageView];

// want the view again?
UIImageView *imageViewAgain = _arrayImages[index];
// but why? you already have the view

// does
if (imageViewAgain == imageView) // of course it's true!
}

请注意,我们根本不需要引用标签或点击的位置。现在,如果我们标记了 View 。我们也可以说:

NSInteger tag = gr.view.tag;
UIImageView *imageViewAgainAgain = _arrayImages[tag];

或者我们可以说:

UIImageView *imageViewAgainAgainAgain = [gr.view.superview viewWithTag:tag];

但同样,这就像从一个狡猾的巴黎出租车司机那里搭便车,让你在拜占庭的圈子里转来转去,只需要按计程表就可以了。

关于ios - 尝试将参数传递给点击手势的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23985935/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com