对于凌乱的标题感到抱歉,我只是不知道如何以一种微妙的方式描述问题。
我正在编写一个类似专辑的应用程序,在我的滚动视图中显示一堆图像,并在触摸图像时执行某些操作。
我按照了这个问题:how can i detect the touch event of an UIImageView并使用带背景图片的按钮来处理触摸事件。
我原来的方法是使用NSOperation同时从互联网上获取图像并将其添加到我的滚动视图中,并且速度非常好,因为每个图像视图都会在每次NSOperation回调后立即显示。
然后我将imageview更改为uibutton,奇怪的是当一个NSOperation回调时,该按钮在我的视图中不显示。当所有NSOperation回调完成时,它们会立即出现。这使用户体验变得不可接受。
这是我的NSOperation回调函数,它将传递一个包含从互联网上获取的图像的按钮
- (void)imageLoaded:(UIButton*)button;
{
NSLog(@"Done");
[button addTarget:self action:@selector(buttonPressed:)
forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button];
}
按钮只会在最后一次“完成”后出现而不是逐一显示,这是正常的吗?或者我弄乱了什么?
====更新========
我想我正在我的viewcontroller上运行NSOperation。我有一个imageLoadOperation类,我将把我的viewcontroller传递给它
imageLoadOperation *ilo = [[imageLoadOperation alloc] initWithURLString:[NSString stringWithFormat:@"link for the image"];
[ilo setParent:self];
[queue addOperation:ilo];
[ilo release];
在imageLoadOperation的主要功能中,我会做
[parentViewController performSelectorOnMainThread:@selector(imageLoaded:) withObject:button waitUntilDone:NO];
你的意思是我需要将这些代码移到AppDelegate而不是在我的viewcontrollor中运行吗?
答案 0 :(得分:0)
您可以在图像视图上使用自定义类型的按钮,而不是使用带有背景图像的按钮,或者您可以在UIImageView上使用触摸事件
答案 1 :(得分:0)
如果不是转换为按钮而只是允许UIImageView处理触摸事件,该怎么办?
要向UIImageView添加触摸事件,请在.m
中使用以下格式UITapGestureRecognizer *newTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(newTapMethod)];
[_imageButtonName setUserInteractionEnabled:YES];
[_imageButtonName addGestureRecognizer:newTap];
然后创建newTapMethod(或者你命名的那个)
-(void)newTapMethod{
//...
}
希望有所帮助。