iOS开发——UI篇Swift篇&UITextView

UITextView

一:UITextView使用及其属性的设置

  1  titleLabel.text = titleString
  2         
  3         //创建UITextView对象
  4         textView = UITextView(frame:CGRectMake(10.0, 120.0, 300.0, 200.0))
  5         
  6         //为方便看到效果,设置背景颜色
  7         textView.backgroundColor = UIColor.grayColor()
  8         
  9         //添加到视图上
 10         self.view.addSubview(textView)
 11         
 12         
 13         //------------------ 常用属性
 14         
 15         //设置textview里面的字体颜色
 16         textView.textColor = UIColor.greenColor()
 17         
 18         //设置文本字体
 19         textView.font = UIFont.systemFontOfSize(18);//使用系统默认字体,指定14号字号
 20         textView.font = UIFont(name: "Helvetica-Bold", size: 18)//指定字体,指定字号
 21         
 22         //设置它的背景颜色
 23         textView.backgroundColor = UIColor.grayColor()
 24         
 25         //设置显示内容
 26         textView.text = "经常听到:\n 被中介骗了,押金不退,晚一天交房租,被讹了。\n\n租房普遍现象:\n网上报价不真实?经常被忽悠!(看房时报价都比网上高!)\n证件不齐全,被骗过!(其实根本不是房东啦!)\n看房前态度都很热情!\n签约之后态度骤变!\n入住后家电维修只能靠自己!\n房屋到期,押金各种被勒索!\n\n现在开始,你来改变这一切!\n《租房点评》为你而备,租房无忧!\n\n再也不用担心被欺骗,想要知道给你介绍房子的人好不好,《租房点评》告诉你!"
 27         
 28         //文本对齐方式
 29         textView.textAlignment = NSTextAlignment.Right
 30         
 31         //文本视图设置圆角
 32         textView.layer.cornerRadius = 20
 33         
 34         //是否允许点击链接和附件
 35         textView.selectable = true
 36         
 37         //返回键的类型
 38         textView.returnKeyType = UIReturnKeyType.Done
 39         
 40         //键盘类型
 41         textView.keyboardType = UIKeyboardType.Default
 42         
 43         //是否可以滚动
 44         textView.scrollEnabled = true
 45         
 46         //自适应高度
 47         textView.autoresizingMask = UIViewAutoresizing.FlexibleHeight
 48         
 49         //设置富文本
 50         var attributeString:NSMutableAttributedString=NSMutableAttributedString(string: "经常听到:\n 被中介骗了,押金不退,晚一天交房租,被讹了。\n\n租房普遍现象:\n网上报价不真实?经常被忽悠!(看房时报价都比网上高!)\n证件不齐全,被骗过!(其实根本不是房东啦!)\n看房前态度都很热情!\n签约之后态度骤变!\n入住后家电维修只能靠自己!\n房屋到期,押金各种被勒索!\n\n现在开始,你来改变这一切!\n《租房点评》为你而备,租房无忧!\n\n再也不用担心被欺骗,想要知道给你介绍房子的人好不好,《租房点评》告诉你!")
 51         
 52         //设置字体颜色
 53         attributeString.addAttribute(NSForegroundColorAttributeName, value: UIColor.greenColor(), range: NSMakeRange(0, attributeString.length))
 54         
 55         //文本所有字符字体HelveticaNeue-Bold,16号
 56         attributeString.addAttribute(NSFontAttributeName, value: UIFont(name: "HelveticaNeue-Bold", size: 16)!, range: NSMakeRange(0, attributeString.length))
 57         
 58         //文本0开始5个字符字体HelveticaNeue-Bold,16号
 59         attributeString.addAttribute(NSFontAttributeName, value: UIFont(name: "HelveticaNeue-Bold", size: 26)!, range: NSMakeRange(0, 5))
 60         
 61         //设置字体颜色
 62         attributeString.addAttribute(NSForegroundColorAttributeName, value: UIColor.whiteColor(), range: NSMakeRange(0, 3))
 63         
 64         //设置文字背景颜色
 65         attributeString.addAttribute(NSBackgroundColorAttributeName, value: UIColor.orangeColor(), range: NSMakeRange(3, 3))
 66         
 67         //赋值富文本
 68         textView.attributedText = attributeString
 69         
 70         //选中一段文本
 71         textView.becomeFirstResponder()
 72         textView.selectedRange = NSMakeRange(30, 10)
 73         
 74         //获取内容整体高度
 75         var height:CGFloat = textView.contentSize.height;
 76         
 77         
 78         
 79         //-------------------------------------------自定义菜单
 80         
 81         //定义4个菜单选择
 82         var menuItem1:UIMenuItem = UIMenuItem(title: "分享到微信", action: "shareWXMenu:")
 83         var menuItem2:UIMenuItem = UIMenuItem(title: "分享到微博", action: "shareWBMenu:")
 84         
 85         //获取菜单控制器
 86         var menuController:UIMenuController = UIMenuController.sharedMenuController()
 87         menuController.menuItems = [menuItem1,menuItem2]
 88 
 89         
 90         
 91         
 92         //-------------------------------------------指定代理
 93         textView.delegate = self
 94         
 95         //-------------------------------------------添加通知
 96         //文本框开始编辑时,触发
 97         NSNotificationCenter.defaultCenter().addObserver(self, selector: "textDidBeginEditing", name: UITextViewTextDidBeginEditingNotification, object: nil)
 98         
 99         //文本框编辑结束时,触发
100         NSNotificationCenter.defaultCenter().addObserver(self, selector: "textDidEndEditing", name: UITextViewTextDidEndEditingNotification, object: nil)
101         
102         //文本框内容改变时,触发
103         NSNotificationCenter.defaultCenter().addObserver(self, selector: "textDidChange", name: UITextViewTextDidChangeNotification, object: nil)
104         
105         
106         

二:相应方法和代理方法的实现

  1     
  2     func textDidBeginEditing()
  3         {
  4             println("开始输入文本...")
  5     }
  6 
  7     func textDidEndEditing()
  8         {
  9             println("结束输入...")
 10     }
 11 
 12     func textDidChange()
 13         {
 14             println("正在输入...")
 15     }
 16 
 17     
 18     
 19     
 20     /*
 21     // MARK: - Navigation
 22 
 23     // In a storyboard-based application, you will often want to do a little preparation before navigation
 24     override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) {
 25         // Get the new view controller using segue.destinationViewController.
 26         // Pass the selected object to the new view controller.
 27     }
 28     */
 29     
 30     // MARK: - UITextFieldDelegate
 31     func textViewShouldBeginEditing(textView: UITextView) -> Bool
 32     {
 33         return true //如果返回false,文本视图不能编辑
 34     }
 35     
 36     func textViewShouldEndEditing(textView: UITextView) -> Bool
 37     {
 38         return true //如果返回false,表示编辑结束之后,文本视图不可再编辑
 39     }
 40     
 41     func textViewDidBeginEditing(textView: UITextView)
 42     {
 43         //文本视图开始编辑,这个时候我们可以处理一些事情
 44     }
 45     
 46     func textViewDidEndEditing(textView: UITextView)
 47     {
 48         //文本视图编辑结束,这个时候我们可以处理一些事情
 49     }
 50     
 51     func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool
 52     {
 53         //文本视图内容改变时,触发本方法,能得到改变的坐标和改变的内容
 54         
 55         //如果是回车符号,则textView释放第一响应值,返回false
 56         if (text ==  "\n") {
 57             textView.resignFirstResponder()
 58             return false;
 59         }
 60         return true
 61     }
 62     
 63     func textViewDidChange(textView: UITextView)
 64     {
 65         //文本视图改变后触发本代理方法
 66     }
 67     
 68     func textViewDidChangeSelection(textView: UITextView)
 69     {
 70         //文本视图 改变选择内容,触发本代理方法
 71     }
 72     
 73     //@availability(iOS, introduced=7.0)
 74     func textView(textView: UITextView, shouldInteractWithURL URL: NSURL, inRange characterRange: NSRange) -> Bool
 75     {
 76         //链接在文本中显示。当链接被点击的时候,会触发本代理方法
 77         
 78         return true
 79     }
 80     
 81     //@availability(iOS, introduced=7.0)
 82     func textView(textView: UITextView, shouldInteractWithTextAttachment textAttachment: NSTextAttachment, inRange characterRange: NSRange) -> Bool
 83     {
 84         //文本视图允许提供文本附件,文本附件点击时,会触发本代理方法
 85         return true
 86     }
 87     
 88     
 89     
 90     
 91     
 92     //按钮显示方法
 93     override func canPerformAction(action: Selector, withSender sender: AnyObject?) -> Bool {
 94         
 95         //判断有没有选中文字,
 96         //如果选择,输出选择的文本
 97         var isSelect:Bool = textView.selectedRange.length > 0
 98         
 99         
100         if(action == "shareWXMenu:" && isSelect)//选择文本,并点击分享到微信菜单
101         {
102             return true;
103         }
104         else if(action == "shareWBMenu:" && isSelect)//选择文本,并点击分享到微博菜单
105         {
106             
107             return true;
108         }
109         
110         return false; //不显示系统的菜单,改成true对比一下效果
111     }
112     
113 
114     
115     //分享到微信
116     func shareWXMenu(sender: AnyObject?)
117     {
118         if textView.selectedRange.length > 0 {
119             println((textView.text as NSString).substringWithRange(textView.selectedRange))
120         }
121         
122         println("这里实现 分享到微信 功能")
123     }
124     //分享到微博
125     func shareWBMenu(sender: AnyObject?)
126     {
127         println("这里实现 分享到微博 功能")
128     }

 

 
 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。