swift UI专项训练40 用swift实现打电话和发短信功能

今天来讲一下如何让我们的APP可以访问系统的短信和电话功能。首先来说短信功能,比较简单,跟之前的做法差别不大,要使用UIApplication,它是一个单例。我们的功能是点击一个按钮,然后拨通一个内置的电话,需要在button的action中加入如下语句:

   @IBAction func phoneBtn(sender:UIButton){
       // var url1 = NSURL(string: "tel://"+canguanArray[0].tel)
        var url1 = NSURL(string: "tel://10086")
        UIApplication.sharedApplication().openURL(url1!)
    }

tel关键字代表电话,跟之前oc上的做法差不多,如果要拨打的电话是传值获得的,参考注释中的写法。除了tel关键字,还有sms关键字:

        var url1 = NSURL(string: "sms://10086")

这样的话是打开了10086的短信界面,如果我们要打开一个浏览器界面,使用下面代码:

 var url1 = NSURL(string: "http://blog.csdn.net/cg1991130")

不过使用这种方法发短信不能设置短信的内容,只能设置收信人。如果我们想要自定义发短信的内容的话,使用下面的方法:

首先在vc中导入头文件:

import MessageUI

之后让vc继承MFMessageCompose的代理:

class CaipinDetailViewController: UIViewController,MFMessageComposeViewControllerDelegate 
func canSendText() -> Bool{
    return MFMessageComposeViewController.canSendText()
    }//用来指示一条消息能否从用户处发送
    func configuredMessageComposeViewController() -> MFMessageComposeViewController{
    let messageComposeVC = MFMessageComposeViewController()
        messageComposeVC.messageComposeDelegate = self
        messageComposeVC.body = "HI! \(caipinArray[0].rest) 的 \(caipinArray[0].name) 味道很不错,邀你共享 -来自SoFun的邀请"
        return messageComposeVC

    }
     func messageComposeViewController(controller: MFMessageComposeViewController!, didFinishWithResult result: MessageComposeResult) {
        controller.dismissViewControllerAnimated(true, completion: nil)
    }

然后在按钮的action方法中加入以下代码:

   @IBAction func share(sender: UIButton) {
        let shareView = ShareViewController()
        self.presentViewController(shareView, animated: true, completion: nil)
    }
    @IBAction func message(sender: UIButton) {
        if self.canSendText(){
        let messageVC = self.configuredMessageComposeViewController()
          presentViewController(messageVC, animated: true, completion: nil)
        } else {
        let errorAlert = UIAlertView(title: "不能发送", message: "你的设备没有短信功能", delegate: self, cancelButtonTitle: "取消")
        }

    }

我们在真机上测试一下,效果图:

时间: 2024-11-04 14:25:35

swift UI专项训练40 用swift实现打电话和发短信功能的相关文章

swift UI专项训练39 用Swift实现摇一摇功能

微信的摇一摇功能想必大家都用过,过春节的时候抢红包也没少摇吧,那么用swift语言怎样实现这么酷炫的功能呢.摇动属于IOS内置可识别的一种动作,在你须要实现摇动功能的viewcontroller中.在viewDidLoad方法中增加下面代码: UIApplication.sharedApplication().applicationSupportsShakeToEdit = true self.becomeFirstResponder() 第一句是要求当前页面支持对摇动事件可编辑的支持,设置为t

Swift UI专项训练1 交互

我们都知道在IOS界面编程的时候有IBOutlet和IBAction,前者是引用后者是操作,IBAction有一个参数sender,用来指向操作对象,之前我发布的天气预报的小程序那一话可以看到,如果我们需要一个按钮的点击事件的话那就使用IBAction,如果是一个Label要显示东西的话那就用IBOutlet. 现在来讲一下IBAction中的一些事件类型: 1.Touch Down Inside:触碰,只要我们碰到不动就算触发了事件 2.Touch Up  Inside:抬离,和1不同的是,触

swift UI专项训练25 网址输入完毕事件

首先我们运行一下上一话中写好的程序看看有什么问题. 我们发现点击return是没有反应的,这是因为我们之前设置了文本框为这个界面的第一反应者,我们要得到键盘的返回必须对键盘做一些操作.从textfield入手,添加一个方法: func textFieldShouldReturn(textField: UITextField) -> Bool { textField.resignFirstResponder() return true } 这是一个点击返回按钮输入框消失的方法,其中在返回之前我们要

Swift UI专项训练7 数据添加

上一话我们使用了自己定义的控制器之后发现tableview上的餐馆没有了,这一话我们来添加数据,新添加一个餐馆类,这个类我们不需要继承系统的类,直接添加一个swift文件就好 import Foundation class Restaurant { var name = "" var location = "" var score = 10 } 我简单建一个类,分别代表餐馆名字.餐馆位置和餐馆评分,它们都有默认值. 然后我们回到餐馆排行的控制器中新建一个餐馆的数组.

swift UI专项训练17 SearchBar搜索条

搜索栏算是UI中很简单的一个操作了,拖一个搜索栏上来. 搜索栏中比较重要的属性是占位符,也就是图中右侧的Placeholder,比如输入"请输入关键字",显示如下: 这一项是设置背景颜色: Options选项会对搜索框进行一些调整: 比如我们选择第一项,会显示出一个下拉箭头: 接下来看这部分: 这个里面有一些很有意思的选项,比如这个Keyboard Type,当我们在网页输入的时候要输入汉字和数字,当我们输入电话号码的时候只能输入数字,就是用这个选项. 还有这个Return Key,我

swift UI专项训练12 ActivityIndicator

有时候我们的APP需要联网或者其他比较耗时的操作,需要给用户提示,提示的好办法是进度条或者一个转圈的齿轮,提示用户有操作在进行.我们在上一话的场景中增加两个按钮,下载和停止,点击下载齿轮就开始转,点击停止就停止. 然后把这个组件拖到我们的场景中 设置格式: 效果如图: 把按钮和齿轮连线到控制器中: @IBOutlet weak var loading: UIActivityIndicatorView! @IBAction func stopButton(sender: UIButton) { }

swift UI专项训练41 用纯代码的方式实现stepper的值传递

之前讲过通过storyboard的方式捕获控件的值,现在我们来试试通过纯代码的方式来实现同样的功能.首先定义一个stepper和一个label,用label来显示stepper的当前值. self.priceStepper = UIStepper(frame: CGRectMake(150, 120, 100, 20)) self.priceStepper.minimumValue = 100//最小值 self.priceStepper.maximumValue = 2000//最大值 sel

swift UI专项训练30 Segmented Control段控件

有时候我们需要给页面分段,也就是分组.基类是UISegmentedControl,下面展示它的属性: 基本上就是几段,段的标题,每一段的图像.现在我们来拖动一个段,默认的是两段,把它的段数设定为3,给第三段命名. 段的事件是这个段发生了切换,valueChanged事件.现在让我们来实现一下,往界面中拖一个label,让段切换的时候,label中显示段的标题. 和上一话中的方法类似,label拖拽到控制器中,然后把segment的事件value changed也拖拽到控制器中. 然后把操作的代码

swift UI专项训练31 Slider 滑块

滑块是用一种渐进柔和的方式来展示一种设置或者一个进度.滑块的基类是UISlider,属性比较简单 主要是最小值最大值和当前值. 设定如下: 可以看到下面有两个选项,最小值图像和最大值图像,我们导入两张图片(不好意思没有太合适的图片...): 它最主要的事件就是值变更,跟我们之前遇到的控件差不多,现在我们让label显示滑动的当前值,最小是0,最大是10,我们上面设置过的. @IBAction func sd(sender: UISlider) { label1.text = "\(sender.