将一个NSDictionary作为parameter passing给UITapGestureRecognizer
我想将一个NSArray
作为parameter passing给UITapGestureRecognizer
并在downloadOptionPressed方法中访问它。 我怎样才能做到这一点 ?
NSArray
NSArray *parameters = [NSArray arrayWithObjects:currentTrack, nil];
创buildUITapGestureRecognizer
UITapGestureRecognizer *downloadOptionPressed = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(timeFrameLabelTapped:)]; [downloadOption addGestureRecognizer:downloadOptionPressed];
downloadOptionPressed
方法
-(void)downloadOptionPressed:(UIGestureRecognizer*)recognizer{ }
是否有一个原因,你不能存储在拥有视图控制器的信息? 是抽象吗?
您始终可以扩展UITapGestureRecognizer以携带更多数据:
@interface UserDataTapGestureRecognizer : UITapGestureRecognizer @property (nonatomic, strong) id userData; @end @implementation UserDataTapGestureRecognizer @end
…
UserDataTapGestureRecognizer *downloadOptionPressed = [[UserDataTapGestureRecognizer alloc] initWithTarget:self action:@selector(timeFrameLabelTapped:)]; downloadOptionPressed.userData = parameters;
…
- (void)downloadOptionPressed:(UserDataTapGestureRecognizer *)recognizer { NSArray *parameters = recognizer.userData; }
您可以使用关联的对象将参数与轻击手势实例一起传递。
你可以检查这个objective-c-associated-objects
它会解决你的问题。
有时传递一个索引就足够了,在这种情况下,标签属性视图就是你的盟友。 在下面的例子中,我假装在tableview单元格中添加一个长按。 而一旦事件被触发,我只想知道哪个单元被长时间按下:
let longPress = UILongPressGestureRecognizer(target: self, action: "longPress:") cell.tag = indexPath.row cell.addGestureRecognizer(longPress)
…
func longPress(guesture: UILongPressGestureRecognizer) { print("\(guesture.view!.tag)")} }