UITextField不同状态下外观不同的思路

先看效果图

编辑状态下和普通状态下的TextField
  • 是不是觉得很眼熟,经常做这种吧。给大家提供一个思路,一般这种我们需要造一个轮子,方便使用。是时候分析一波了:可以看到有2种类型的输入框,第一种右边带有图片的,第二种右边不带图片的。所以造轮子的时候要考虑进去。最好提供2种初始化的方法。但是最终走的都是同一个方法,只是参数有所不同而已(参见OC的工厂模式)。
  • 同时每一个输入框在编辑状态下和普通状态下有显著的不同-边框颜色,右侧图片(如果有右侧图片)都发生了变化。最开始考虑使用代理来监测输入框的输入状态,根据不同的代理方法的状态来改变输入框的外观。但是转念一想似乎不妥,如果外界需要代理呢?难不成代理可以设置为2个对象?我感觉行不通。
  • 于是就想到了这个东西
- (BOOL)becomeFirstResponder;
- (BOOL)resignFirstResponder

我们完全可以重写这2个方法啊。
于是得到了下面的代码,完美解决需求。

- (BOOL)becomeFirstResponder
{
    if (self.borderColorForEditing) {
        self.layer.borderColor = _borderColorForEditing.CGColor;
    }
    if (self.rightImageForEditing) {
        [self setRightImageViewForState:UIControlStateFocused];
    }
    return [super becomeFirstResponder];
}
- (BOOL)resignFirstResponder
{
    if (self.borderColorForNormal) {
        self.layer.borderColor = _borderColorForNormal.CGColor;
    }
    if (self.rightImageForNormal) {
        [self setRightImageViewForState:UIControlStateNormal];
    }
    return [super resignFirstResponder];
}
  • 顺便提一下:输入框左侧的文字长度不一致,但要求左右对齐,中间留空,那么可以取巧使用中文的全角打一个或多个空格达到这个效果,当然遇到用这种方式也解决不了的,可以使设置字间距,但是字间距我用过有一些问题,就是最后一个文字没有在最右侧,和容器的最右侧有一定的间距,目前还没找到解决办法。如果哪位仁兄有好的思路,还请不吝赐教!
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 179,806评论 25 708
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 16,383评论 4 61
  • 背单词无疑三部曲:单词变得有趣章,耐下心去看章,重复复习章。重复复习章的核心就是艾宾浩斯遗忘曲线,但这建立在看背的...
    一条红烧鱼呦阅读 282评论 0 1
  • 三次喝大口水: 起床后 中午饭前 运动前 早餐: 先稀饭或奶类 如果不饿鸡蛋留着 一个苹果 2片全麦面包 午餐: ...
    福尔摩洋阅读 288评论 0 0
  • 有奋斗史,有光辉史,一个青年作者的生活经历,和冰叔的书比起来有相似之处,都是对于活法的描述
    这是生活啊阅读 185评论 0 0

友情链接更多精彩内容