Objective c 将参数发送到手势识别器初始化选择器?
在我的程序中,我有一个Objective c 将参数发送到手势识别器初始化选择器?,objective-c,ios,methods,selector,uitapgesturerecognizer,Objective C,Ios,Methods,Selector,Uitapgesturerecognizer,在我的程序中,我有一个UITapGestureRecognizer,我已经用initWithTarget:action:初始化了它。我传入了一个选择器,以调用名为PlanetTapped:(UIImageView*)aPlanet的方法。这调用的方法很好,但是我想知道如何将参数传递到action:中,就像使用performSelector:withObject一样。这有可能吗?允许您将参数发送到UIgestureRecognitor的选择器是有意义的。非常感谢您的帮助。要调用的方法的正确签名为:
UITapGestureRecognizer
,我已经用initWithTarget:action:
初始化了它。我传入了一个选择器,以调用名为PlanetTapped:(UIImageView*)aPlanet
的方法。这调用的方法很好,但是我想知道如何将参数传递到action:
中,就像使用performSelector:withObject
一样。这有可能吗?允许您将参数发送到UIgestureRecognitor
的选择器是有意义的。非常感谢您的帮助。要调用的方法的正确签名为:
-(void) PlanetTapped: (UIGestureRecognizer*)gestureRecognizer
然后,您可以通过调用以下命令访问接收手势的视图:
-(void) PlanetTapped: (UIGestureRecognizer*)gestureRecognizer {
UIImageView* aPlanet = gestureRecognizer.view;
...
}
事实上,这就是所说的:
手势识别器具有一个或多个与其关联的目标动作对。如果存在多个目标操作对,则它们是离散的,而不是累积的。识别手势的结果是为每对手势向目标发送动作消息。调用的操作方法必须符合以下签名之一:
- (无效)手感李>
- (无效)手势识别器:(UIgestureRecognitor*)手势识别器李>
希望这些可以帮助您。在Swift 3.0中,函数签名如下(在这些示例中,根据需要替换另一个手势识别器类): 设置手势识别器时,请参照此功能,如下所示:
longTouchGesture = UILongPressGestureRecognizer(target: self, action: #selector(myButtonLongTouch(_:)))
if (sender.state == UIGestureRecognizerState.ended) {
// Your code here
}
然后,要访问按下的视图(在我的例子中是一个按钮),请使用以下代码:
if let button = sender.view as? UIButton {
// Your code here
}
最后,不要忘记该函数被多次调用(通常在手势开始和结束时),因此您需要检查状态,您可以按如下操作:
longTouchGesture = UILongPressGestureRecognizer(target: self, action: #selector(myButtonLongTouch(_:)))
if (sender.state == UIGestureRecognizerState.ended) {
// Your code here
}
啊,当然。我应该想到的。谢谢你的帮助!