【问题标题】:Call phone action don't work in swift拨打电话操作无法快速进行
【发布时间】:2016-06-20 12:42:26
【问题描述】:

您好,我有电话号码的按钮操作,但是当我使用它时,它不呼叫并且没有任何显示。

我的代码在下面。

  @IBAction func callPhone(sender: AnyObject) {
        UIApplication.shared().canOpenURL((NSURL(string: "tel://1234567890")! as URL))
    }

谢谢!

【问题讨论】:

  • 删除 // 字符
  • @Paulw11 不,不工作
  • 您的代码有效。它只是没有做你认为它做的事情。 :p
  • @EricD 不要打电话给 Eric
  • 正是我所说的:这段代码不是用来调用的。 :) 仔细查看您使用的方法以及回答者建议的方法......它们与 Swift 3 不兼容,但他们有正确的想法。

标签: ios ibaction swift3


【解决方案1】:

正确的 Swift 3.0 代码

    if let url = URL(string: "tel://\(phoneNumber)") {
      UIApplication.shared().open(url, options: [:], completionHandler: nil)
    }

在 Swift 3.0 中,NSURL 已更改为 URL。并且sharedApplciation 更改为shared。还有OpenURL改成open,他们在open方法中添加了一堆其他参数,你可以在optionsnil中传递空字典completionHandler

【讨论】:

    【解决方案2】:

    请尝试使用以下代码来解决您的问题。

    if let url = NSURL(string: "tel://\(1234567890)") {
      UIApplication.sharedApplication().openURL(url)
    }
    

    【讨论】:

    • 当我使用此代码调用但给我黄色警告“'openURL' 在 iOS 10.0 中已弃用:请改用 openURL:options:completionHandler:”
    • 不..我这个你可以使用openURL:options:completion所以可能会解决你的问题。
    • 是的,需要选项:我认为用你的代码完成代码就可以了。
    • @SwiftDeveloper 我没有xcode10 否则我会调查你的警告:-(
    【解决方案3】:

    试试这个答案。

     @IBAction func callPhone(sender: AnyObject) {
    
                if let url = NSURL(string: "tel://9069118117") {
    
                UIApplication.sharedApplication().openURL(url)
    
           }
        }
    

    【讨论】:

      【解决方案4】:

      请注意:

      • tel://尝试直接拨打电话号码;
      • telprompt:// 向您显示确认呼叫的提醒

      从 iOS 10 开始,openUrl 已被弃用;

      @available(iOS,引入:2.0,弃用:10.0,消息:“请改用 openURL:options:completionHandler:”) open func openURL(_ url: URL) -> Bool

      所以我建议使用此代码块来支持 iOS

      if #available(iOS 10, *) {
          UIApplication.shared.open(yourURL)
      
          // if you need completionHandler:
          //UIApplication.shared.open(yourURL, completionHandler: { (aBool) in })
      
          // if you need options too:
          //UIApplication.shared.open(yourURL, options: [:], completionHandler: { (aBool) in })
      
      } else {
          UIApplication.shared.openURL(number)
      }
      

      【讨论】:

        【解决方案5】:

        最新的 Xcode最新的 Swift 工作代码。

        使用telprompt:// tel

        let myphone = "+134345345345"
        
         if let phone = URL(string:"telprompt://\(myphone)"), UIApplication.shared.canOpenURL(url) {
                    UIApplication.shared.openURL(url)
                }
        

        【讨论】:

        • 这显示了两个按钮(取消和呼叫) - 有没有办法添加一个在顶部显示数字的标题?我看到应用程序会这样做,但我找不到任何有关如何执行此操作的文档。
        猜你喜欢
        • 2015-01-31
        • 1970-01-01
        • 1970-01-01
        • 2023-03-14
        • 2014-06-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多