我正在尝试为我的UITableViewCell
添加一个加号按钮。
我将StringElement子类化并添加UIImageView
作为我的Cell AccessoryView。
为了让它可以触摸,我添加UITapGestureRecognizer
,但每次尝试这个时,我都会得到同样的例外。
我的GestureRecognizer和ImageView在StringElement的类级别声明 我做错了什么?
我的代码:
public class PrioritizeAndAddElement : StringElement
{
NSAction Plus;
UITapGestureRecognizer tap;
UIImageView image;
public PrioritizeAndAddElement (string caption, NSAction select, NSAction plus) : base(caption, select)
{
Plus = plus;
}
public override UITableViewCell GetCell (UITableView tv)
{
UITableViewCell cell = base.GetCell(tv);
image = new UIImageView(new UIImage("images/app/greenbutton.png"));
image.UserInteractionEnabled = true;
image.Frame = new RectangleF(cell.Frame.Width - 65, 14, 25, 25);
cell.AccessoryView = image;
tap = new UITapGestureRecognizer(image, new Selector("tapped"));
image.AddGestureRecognizer(tap);
return cell;
}
[Export("tapped")]
public void tapped(UIGestureRecognizer sender){
if(Plus != null)
Plus();
}
}
这就是全部。我抓住单元格并添加图像和识别器。在这种情况下,没有任何反应。
当我将识别器添加到我的TableView时,我将获得异常。
我添加了我的元素全班。 我希望这会有所帮助。
答案 0 :(得分:3)
问题在于
tap = new UITapGestureRecognizer(>>>image<<<, new Selector("tapped"));
手势识别器的目标是图像,您已在PrioritizeAndAddElement类中定义了该图像。尝试这样的事情
public class TappableImageView : UIImageView
{
NSAction Plus;
public TappableImageView(NSAction plus, UIImage img) : base(img)
{
this.Plus = plus;
}
[Export("tapped:")]
public void Tapped(UIGestureRecognizer sender)
{
if(Plus != null)
Plus();
}
}
...
image = new TappableImageView(new UIImage("images/brushTexture1.png"));