是否可以对 UILabel 进行电话呼叫操作?
Posted
技术标签:
【中文标题】是否可以对 UILabel 进行电话呼叫操作?【英文标题】:Is it possible to give a phone Call action to a UILabel? 【发布时间】:2014-03-10 22:34:43 【问题描述】:我在我的应用程序中以编程方式将 Parse.com 中的字符串提取到 UILabel 中。 字符串是电话号码。所以我的问题是,是否可以在点击时对 UILabel 进行操作以拨打电话。或者我是否必须从按钮中获取数据,或者更好的是,这可能吗?
如果可以,我应该怎么做?有人有我可以遵循的示例或教程吗? 任何帮助,将不胜感激。 谢谢!
【问题讨论】:
【参考方案1】:你的问题分为两部分:
-
在录制 UILabel 时执行任何类型的操作
执行电话操作(第一部分中使用的操作)
首先,要在标签被粘贴时执行操作,您必须向该标签添加轻击手势识别器:
phoneNumberLabel.userInteractionEnabled = YES;
UITapGestureRecognizer *tapGesture =
[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(phoneNumberLabelTap)];
[phoneNumberLabel addGestureRecognizer:tapGesture];
然后你必须实现你的 phoneNumberLabelTap 方法:
-(void)phoneNumberLabelTap
NSURL *phoneUrl = [NSURL URLWithString:[NSString stringWithFormat:@"telprompt:%@",phoneNumberLabel.text]];
if ([[UIApplication sharedApplication] canOpenURL:phoneUrl])
[[UIApplication sharedApplication] openURL:phoneUrl];
else
UIAlertView * calert = [[UIAlertView alloc]initWithTitle:@"Alert" message:@"Call facility is not available!!!" delegate:nil cancelButtonTitle:@"ok" otherButtonTitles:nil, nil];
[calert show];
【讨论】:
这太棒了!!我有一个小问题,我相信这是因为我在子视图中有这个 UILabel(也许?)我收到使用未声明标识符的错误。 嘿,又是我.. 我想知道如何在 safari 中打开网站并在 Facebook 中打开页面?字符串格式会怎样?谢谢:)! 又是我,没关系!想通了网站..现在正在寻找 Facebook! 我与 Facebook 的唯一互动是使用 Parse 登录并获取有关用户的一些信息。您应该在 SO 中寻找“Facebook URL scheme ios”,有很多答案,但我从未尝试过其中任何一个,所以我无法为您提供更多自定义 URL 的帮助,抱歉! 如果您遇到需要它:,我想通了。这是代码:- (void)goFbPage:(UITapGestureRecognizer *)tapFbPage NSURL *facebookURL = [NSURL URLWithString:[NSString stringWithFormat:@"%@", label.text]]; if ([[UIApplication sharedApplication] canOpenURL:facebookURL]) [[UIApplication sharedApplication] openURL:facebookURL]; else make you alert here..
请记住,您的字符串必须遵循以下格式:fb://profile/thepageidnumber【参考方案2】:
在 swift 3.0 中
mobileLabel.isUserInteractionEnabled = true;
let tap = UITapGestureRecognizer(target: self, action:#selector(self.phoneNumberLabelTap))
tap.delegate = self
mobileLabel.addGestureRecognizer(tap)
func phoneNumberLabelTap()
let phoneUrl = URL(string: "telprompt:\(mobileLabel.text ?? "")")!
if(UIApplication.shared.canOpenURL(phoneUrl))
UIApplication.shared.openURL(phoneUrl)
else
Constants.ShowAlertView(title: "Alert", message: "Cannot place call", viewController: self, isFailed: false)
【讨论】:
以上是关于是否可以对 UILabel 进行电话呼叫操作?的主要内容,如果未能解决你的问题,请参考以下文章
使用没有alertView的UIWebView在iOS中以编程方式进行电话呼叫