Wod*_*fer 11 objective-c ios4 xcode4.5
我正在进行一系列的imageview安排,并TapView为其分配一个识别器
UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc]
initWithTarget:self action:@selector(action:)];
[tapRecognizer setNumberOfTouchesRequired:1];
[tapRecognizer setDelegate:self];
imageView.userInteractionEnabled = YES;
[imageView addGestureRecognizer:tapRecognizer];
Run Code Online (Sandbox Code Playgroud)
我已将选择器定义为:
-(void) action:(id)sender
{
NSLog(@"TESTING TAP");
NSLog (@"%d",[sender tag]);
}
Run Code Online (Sandbox Code Playgroud)
这是崩溃,我收到错误消息: -
[UITapGestureRecognizer tag]: unrecognized selector sent to instance 0x145d0210
Nir*_*iya 34
你可以用这个..
UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc]
initWithTarget:self action:@selector(action:)];
[tapRecognizer setNumberOfTouchesRequired:1];
[tapRecognizer setDelegate:self];
imageView.userInteractionEnabled = YES;
imageView.tag = 1111;
[imageView addGestureRecognizer:tapRecognizer];
Run Code Online (Sandbox Code Playgroud)
并在行动中尝试这个..
-(void) action:(id)sender
{
NSLog(@"TESTING TAP");
UITapGestureRecognizer *tapRecognizer = (UITapGestureRecognizer *)sender;
NSLog (@"%d",[tapRecognizer.view tag]);
}
Run Code Online (Sandbox Code Playgroud)
阐释:
UITapGestureRecognizer没有财产喜欢tag.但它有属性view,您可以从此属性访问UITapGestureRecognizer附加的视图.
希望它会对你有所帮助
Use*_*343 10
只需使用以下内容更改您的选择器方法即可
tapgesture将有整个视图被点击..然后你可以从它获得标签属性,如下所述
-(void)action:(UITapGestureRecognizer *)tapGesture{
NSLog(@"TESTING TAP");
NSLog (@"%d",tapGesture.view.tag);
}
Run Code Online (Sandbox Code Playgroud)
既UITapGestureRecognizer没有UIGestureRecognizer宣布要求的财产或方法tag.
你不能使用它.这就是你收到错误的原因.
在相关的说明.我真的不喜欢tag一般使用.总有一种更好的方法可以在不使用的情况下做你正在做的事情tag.
Swift 相当于已接受的答案:
//use this to set up your tap gesture
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(self.reactToTap(sender:)))
imageView.tag = 33
imageView.isUserInteractionEnabled = true
imageView.addGestureRecognizer(tapGesture)
Run Code Online (Sandbox Code Playgroud)
这是由点击触发的函数:
@objc private func reactToTap(sender: UITapGestureRecognizer) {
print("ImageView tag: ", sender.view?.tag ?? 0) //"ImageView tag: 33"
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12625 次 |
| 最近记录: |