我的代码如下:想象一下我已经有了一个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所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)