您的位置:首页 > 产品设计 > UI/UE

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

2015-10-18 09:36 585 查看

随口

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

每更新一个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.>通知需要移除



 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: