关于如何自定义一个 文本输入框(UITextView) 的思想以及整个操作流程

随口

怎么去学一个新的类,看他继承谁,看他的属性都有什么作用,隐藏属性是什么。

每更新一个Xcode  就会有新的知识,研究一个自己的一套学习方法,多思考,类的属性在哪里可以用到

合格的自定义控件只需要外部给你数据就可以来,不需要关心你内部是怎么实现的。

1. 文本输入框有哪些选择  为什么要选择继承UITextView

用油文本输入功能的目前有UITextField 和 UITextView ,总结一下两个控件的特点,UITextView 换行比较方便,占位符可以自定义。


2.作为一个自定义控件应该考虑的情况是哪些?

 1.>给别人提供什么借口,别人使用你这个控件时会使用的方法和属性

 2.>当别人使用你控件属性时,应该直接改变控件属性值,重写 属性set 方法

 3.>使用控件父类属性时,不会调用重绘方法。出现文字重叠现象,所以需要重写 父类一些属性的set方法,比如text,font;

3.控件的使用注意事项?

1.>监听控件行为时,注意不要让 控件的代理是它自己<self.delegate = self>,这句话随时可以当外部调用delegate时,内部空间的代理就挂掉了;

     另外,使用代理对象是自己,这个设计本身不合理。

 2.>  需要知道 [self setNeedsDisplay] 方法是做什么的, 会调用   - (void)drawRect:(CGRect)rect 方法重绘

4.自定义文本输入框控件的完整流程。

1.>提供给外部可以改变自己占位符的文字属性  和占位符颜色的属性  字体可以使用外部字体大小



 2.> 使用 画图 将占位符文字画出来  ,注意这里需要判断 文本框上面是否 有文字,,可以根据  UITextView.hasText 属性 和 self.text.length 

       使用 drawInRect: withAttributes: 方法 将 文字输入范围限制在一定范围内

      self.font 需要一个默认字体,跟color一样



 3.> 使用通知 监听 文本框的文字输入状态   在文字输入时  重新调用绘图方法  [self setNeedsDisplay];




 4.>重写属性set 方法,在外部改变控件属性时,应该第一时间改变自身属性值;重写set 方法 注意要重新调用一次 绘图方法


 5.>当调用控件父类属性时,不会出现重绘方法,所以 我们需要重写 父类的一些属性 set方法



4.注意事项

1.>[self setNeedsDisplay] 会在下一次消息循环中调用   - (void)drawRect:(CGRect)rect 方法,重复多次调用是没有用的。每消息循环一次,才会调用一次。

          NSRunLoop  消息循环

2.>通知需要移除




 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
UITextView是UIKit框架中的一个控件,可以用来显示和编辑长文本。而富文本则是指带有丰富样式的文本,可以设置文字的字体、颜色、大小、间距、行高等属性。 要在UITextView实现文本,首先需要创建一个NSAttributedString对象,并通过NSMutableAttributedString来设置文字的样式。NSAttributedString是不可变的,而NSMutableAttributedString可以修改和添加样式。 创建NSMutableAttributedString对象后,可以使用其方法来设置文字的样式,比如设置字体可以使用NSFontAttributeName属性,设置颜色可以使用NSForegroundColorAttributeName属性,设置字号可以使用NSFontAttributeName属性,设置段落样式可以使用NSParagraphStyleAttributeName属性等等。 设置完成后,就可以将NSMutableAttributedString对象赋值给UITextView的attributedText属性,以实现文本的显示。 例如,我们想将某个UITextView的文字样式设置为红色、字号为20、字体为粗体,可以按如下方式设置: ``` NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:@"这是富文本"]; [attributedString addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(0, attributedString.length)]; [attributedString addAttribute:NSFontAttributeName value:[UIFont boldSystemFontOfSize:20] range:NSMakeRange(0, attributedString.length)]; textView.attributedText = attributedString; ``` 通过上述代码,就可以在UITextView中显示带有红色、字号为20、字体为粗体的文字。 除了以上示例外,UITextView还支持更多的富文本样式设置,根据具体需求,可以设置更多的属性来实现更丰富的文本效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值