ios – Objective-C:将字符串参数传递给tapgesture @selector

ios – Objective-C:将字符串参数传递给tapgesture @selector,第1张

概述我想要实现的是:当我点击特定的UI ImageView时,UITapGesture会将一个字符串传递给tap方法. 我的代码如下:想象一下我已经有了一个UIImageView对象,当我点击这个图像时,它会打个电话, UITapGestureRecognizer *tapFirstGuy = [[UITapGestureRecognizer alloc] initWithTarget:self ac 我想要实现的是:当我点击特定的UI ImageVIEw时,UITapGesture会将一个字符串传递给tap方法.

我的代码如下:想象一下我已经有了一个UIImageVIEw对象,当我点击这个图像时,它会打个电话,

UITapGestureRecognizer *tapFirstGuy = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(makeCallToThisPerson:@"1234567")];[imageVIEwOne addGestureRecognizer:tapFirstGuy];- (voID)makeCallToThisPerson:(Nsstring *)phoneNumber{    Nsstring *phoneNum = [Nsstring stringWithFormat:@"tel:%@",phoneNumber];    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:phoneNum]];}

但是,我收到以下编译错误:@selector(makeCallToThisPerson:@“1234567”);

我无法弄清楚发生了什么.为什么我不能将字符串传递给私有方法?

解决方法 该 *** 作应该只是一个方法的选择器,该方法的签名必须是“采用单个ID参数并返回voID的方法”. ID参数将(通常)是发送消息的对象.

目标( *** 作发送到的对象)可以使用sender参数在需要时提取其他信息,但需要提供其他信息.它不是免费提供的.

也就是说,您的ImageVIEw子类可能具有以下方法:

- (voID)setPhoneNumber:(Nsstring *)phoneNumber; // set a phoneNumber property- (voID)preparetoBeTapped {    UITapGestureRecognizer *tapFirstGuy = [[UITapGestureRecognizer alloc]        initWithTarget:self action:@selector(makeCallToThisPerson:)];    [self addGestureRecognizer:tapFirstGuy];}- (voID)makeCallToThisPerson:(ID)sender{    Nsstring *phoneURL = [Nsstring stringWithFormat:@"tel:%@",phoneNumber];    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:phoneURL]];}

也就是说,这不是行动,甚至不知道电话号码的UITapGestureRecognizer.目标必须以其他方式知道(或能够获得)电话号码,或者将其作为可设置的属性携带.

总结

以上是内存溢出为你收集整理的ios – Objective-C:将字符串参数传递给tapgesture @selector全部内容,希望文章能够帮你解决ios – Objective-C:将字符串参数传递给tapgesture @selector所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1012433.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存