长按手势在 UIButton 中显示图像
Posted
技术标签:
【中文标题】长按手势在 UIButton 中显示图像【英文标题】:Show an image in a UIButton on long press gesture 【发布时间】:2012-01-26 16:14:08 【问题描述】:我有以下问题。我有一个UIScrollView
,上面有几个按钮,这些按钮上的图标设置为图像。我有一个长按识别器连接到每个按钮。如何在长按手势的发件人按钮上显示较小的删除图标?我的目标是创建当用户想要删除特定应用程序时 ios 呈现的行为。
这是按钮的代码(带图像):
//set the button with the image of conference here.
UIButton * button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = CGRectMake(3, 3, w-5, h-5);
CALayer * l = [button layer];
[l setMasksToBounds:YES];
[l setCornerRadius:8.0];
[button setImage:thumb forState:UIControlStateNormal];
button.property = confInfo;
[button addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];
button.tag = i;
bView.tag = i;
//Add gesture recognizer to be used for deletion of conference.
UILongPressGestureRecognizer *pahGestureRecognizer = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressGestureRecognizerStateChanged:)];
pahGestureRecognizer.minimumPressDuration = 1.0;
[button addGestureRecognizer:pahGestureRecognizer];
这段代码在一个循环中(见代码中的 i)。我的长按动作是这样的:
- (void)longPressGestureRecognizerStateChanged:(UIGestureRecognizer *)gestureRecognizer
switch (gestureRecognizer.state)
case UIGestureRecognizerStateEnded:
NSLog(@"Tapped!!!");
break;
default:
break;
如何将单击的按钮传递给此操作,以在按钮的右上角显示较小的 X 图像?
【问题讨论】:
【参考方案1】:您的手势识别器应通过其视图属性附加到 UIButton。
case UIGestureRecognizerStateEnded:
NSLog(@"Tapped!!!");
[((UIButton*)gestureRecognizer.view) setImage:thumbWithX forState:UIControlStateNormal];
break;
【讨论】:
如果将高亮或选中的图像设置为带有X的图像,那么您可以简单地更改按钮的状态而不是更改图像,这样会更好一些,但取决于是否你已经在使用这些状态图像了。 @Fls'Zen:我对点击事件有一个动作,所以我想在长按时显示一个小图像。我也有一点看这个按钮是哪个,带有X的图像实际上是一个带有动作的按钮。以上是关于长按手势在 UIButton 中显示图像的主要内容,如果未能解决你的问题,请参考以下文章