我有2个uibutton和1个标签,长压力限制在这些控制之下。当在任何控件上进行longpress时,如何获取下面发生longpress的对象是我写的代码。
UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btn.frame = CGRectMake(80.0, 210.0, 160.0, 40.0);
[btn addTarget:self action:@selector(wasDragged:withEvent:) forControlEvents:UIControlEventTouchDragInside];
//[self.view addSubview:btn];
btn.userInteractionEnabled = YES;
// add it
[self.view addSubview:btn];
UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc]
initWithTarget:self
action:@selector(handleLongPress:)];
longPress.minimumPressDuration = 1.0;
[btn addGestureRecognizer:longPress];
下面是在longpress上调用的函数
-(void)handleLongPress:(id)sender{
}
如果我打印发件人的描述,那么我得到
<UILongPressGestureRecognizer: 0x6aa4480; state = Began; view = <UIRoundedRectButton 0x6aa9570>; target= <(action=handleLongPress:, target=<ViewController 0x6a8cc60>)>>
从中我怎样才能在长时间事件发生时获得对象的参考 我的意思是我怎么知道我是否自称UiLabel或Uibutton?
答案 0 :(得分:2)
只需检查UIGestureRecognizer(父类)视图属性:
@property(非原子,只读)UIView * view
手势识别器附加到的视图。 (只读)
@property(非原子,只读)UIView *视图 讨论 使用addGestureRecognizer:方法将手势识别器附加(或添加)到UIView对象。
答案 1 :(得分:1)
-(void)handleLongPress:(UILongPressGestureRecognizer *)sender{
if ([sender.view isKindOfClass:[UIButton class]]) {
UIButton *myButton = (UIButton *)sender.view; // here is your sender object or Tapped button
if (myButton.tag == 1) {
//sender is first Button. Because we assigned 1 as Button1 Tag when created.
}
else if (myButton.tag == 2){
//sender is second Button. Because we assigned 2 as Button2 Tag when created.
}
}
if ([sender.view isKindOfClass:[UILabel class]]) {
UILabel *myLabel = (UILabel *)sender.view; // here is your sender object or Tapped label.
}
}