我刚刚发现一个UIButton
对象有一个方法addTarget
来处理UI事件,但是一个UIImageView
对象没有这样的方法,所以我们不能在代码中完成它,并且不能使用Interface来添加这样的Action也可以为UIImageView
对象创建。可以使用手势识别器,但有没有简单的方法将addTarget
添加到UIImageView
,以便我们的代码不是部分由手势识别器处理,部分由addTarget
方法处理?在iOS上,有没有办法将方法addTarget添加到UIImageView?
2
A
回答
6
它不应该有太大的麻烦,添加一个手势识别调用同一个选择,你的按钮调用:
UIButton *button = [[UIButton alloc] init];
[button addTarget:self action:@selector(tapped:) forControlEvents:UIControlEventTouchUpInside];
UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapped:)];
[[self view] addGestureRecognizer:tapRecognizer];
- (void)tapped:(id)sender {}
+0
aha,我最初的担心是我不希望某些UI由'addTarget'处理,有些UI由手势识别器处理。 。 –
0
因为UIImageView的是不是一个子类UIControl(这是UIButton的的超),所以我的解决方案是伪造具有轻击手势的UIControl的行为,并为自定义UIImageView创建addTarget:action方法,使其看起来像其他UIControl类。
我创建了一个子类的UIImageView称为SWImageView,在标题:
- (void)addTarget:(id)target action:(SEL)action;
在主文件
:
- (void)addTarget:(id)target action:(SEL)action
{
if (tapGestureRecognizer!=nil) {
[self removeGestureRecognizer:tapGestureRecognizer];
}
tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:target action:action];
[self addGestureRecognizer:tapGestureRecognizer];
}
不要忘了让用户交互:
self.userInteractionEnabled = YES;
相关问题
- 1. LINQ扩展方法:有没有办法or子句添加到其中,方法
- 2. 有没有办法将客户端方法添加到ASP.NET用户控件?
- 3. 有没有办法可以动态地将属性添加到python方法?
- 4. 有没有办法看到铬iOS CSS?
- 5. UIImageView没有添加到UIView
- 6. 有没有办法给jquery css方法添加变量?
- 7. 有没有办法将日历视图添加到iOS应用程序?
- 8. 有没有办法通过编程将Alias添加到Powershell Cmdlet?
- 9. 有没有办法像这样将块添加到NSOperationQueue中
- 10. 有没有办法将条件添加到COUNT()中?
- 11. 有没有办法将嵌入式Python代码添加到Markdown?
- 12. 有没有办法将jQuery UI类添加到每个元素
- 13. Android有没有办法将ImageViews添加到PreferenceCategory?
- 14. 有没有办法将数据添加到Response对象?
- 15. 有没有办法将一个“预处理”添加到UIButton?
- 16. 有没有办法将数据添加到剪贴板?
- 17. 有没有办法将PHP SimpleXMLElement添加到另一个SimpleXMLElement?
- 18. 有没有办法将图像添加到VBA中的MessageBox?
- 19. 有没有办法将这个JavaScript添加到HTML文件?
- 20. 有没有办法将alt属性添加到ZingChart?
- 21. 有没有办法将覆盖率报告添加到gitlab?
- 22. 有没有办法将最小高度添加到表格中?
- 23. 有没有办法将自定义类模板添加到Eclipse?
- 24. 有没有办法将embarcadero xe5添加到git中?
- 25. 有没有办法将事件添加到YUI日历中?
- 26. 有没有办法将Pygame添加到本地PHP文件中?
- 27. 有没有办法将一组元素添加到表单中?
- 28. 有没有办法使用JavaScript将文件添加到HTML5 applicationCache?
- 29. 有没有办法将按钮动态添加到JSON表中?
- 30. 有没有办法将6502程序集添加到Google Code Prettify?
为什么不只是使用带背景图像的按钮? – wattson12
同意@ wattson12:任何其他解决方案都只是过分复杂的事情。如果点击需要发生,请将其设置为UIButton,并将UIImageView中的图像设置为所有控件状态的按钮图像。 – WendiKidd
这样按钮看起来就像一个图像,除了它是可以点击的?我认为可能会有副作用,例如在触摸时颠倒图像的颜色,但实际上可能需要根据情况进行设置 –