普通输入框

AUInputBox 为普通输入框,支持左侧标题以及右侧图像按钮。

效果图

接口说明

typedef NS_ENUM(NSInteger, AUInputBoxType)
{
        AUInputBoxTypeMobileNumber,     // 手机号码
        AUInputBoxTypeCreditCard,       // 信用卡
        AUInputBoxTypeBankCard,         // 借记卡
        AUInputBoxTypeAmount,           // 金额
        AUInputBoxTypeIDNumber,         // 身份证
        AUInputBoxTypeNotEmpty,         // 非空
        AUInputBoxTypeAlipayAccount,    // mPaaS 应用账号
        AUInputBoxTypeNone              // 不校验
};

typedef enum AUInputBoxStyle
{
        AUInputBoxStyleNone, // 没有背景图片
        AUInputBoxStyleiOS6, // 圆角的背景图片
        AUInputBoxStyleiOS7  // 非圆角的背景图片
} AUInputBoxStyle;


/**
 普通输入框,可带标题文字,按钮图片样式
 */
@interface AUInputBox : UIView

#pragma mark - AUInputBox 属性

// 文本输入框
@property(strong, nonatomic)   AUTextField      *textField;
@property(strong, nonatomic)   NSString         *textFieldText;
@property(strong, nonatomic)   NSString         *textFieldFormat;
@property(assign, nonatomic)   CGFloat          horizontalMargin;
@property(assign, nonatomic)   CGFloat          textFieldHorizontalMargin;


// 按钮
@property(strong, nonatomic)   UIButton         *iconButton;
@property(assign, nonatomic)   BOOL             hidesButtonWhileNotEmpty;
@property(assign, nonatomic)   BOOL             hidesButton;


// 显示在输入框左边的 label
@property(nonatomic, readonly) UILabel          *titleLabel;
@property(nonatomic, assign)   CGFloat          titleLabelWidth;


// 样式、验证器、背景图、文本框类型
@property(assign, nonatomic)   AUInputBoxStyle  style;
@property(readonly, nonatomic) UIImageView      *backgroundImage;
@property(assign, nonatomic)   AUInputBoxType   inputBoxType;

#pragma mark - AUInputBox 静态方法
/**
 *  创建输入框组件
 *  @param  originY 输入框的 Y 坐标
 *  @param  type 文本输入框的类型
 *  @return 输入框组件
 */
+ (instancetype)inputboxWithOriginY:(CGFloat)originY inputboxType:(AUInputBoxType)type;

/**
 *  创建带图标按钮的输入框组件
 *  @param  originY 输入框的 Y 坐标
 *  @param  icon 按钮上的图标,44x44
 *  @param  type 文本输入框的类型
 *  @return 带按钮的输入框组件
 */
+ (instancetype)inputboxWithOriginY:(CGFloat)originY buttonIcon:(UIImage *)icon inputboxType:(AUInputBoxType)type;

/**
 *  @return 控件高度,默认值为 44,iPhone6 plus 为 47
 */
+ (float)heightOfControl;


#pragma mark - AUInputBox 实例方法

- (instancetype)initWithFrame:(CGRect)frame inputboxType:(AUInputBoxType)type;

- (void)buildIconButton:(UIImage *)icon;

/**
 *  按照指定格式对文本添加空格
 *  @param  text 文本内容
 *  @return 添加空格后的文本
 */
- (NSString *)formatText:(NSString *)text;

/**
 *  对于没有在初始化时指定 icon 的 inputBox, 可以使用此方法添加
 *  @param icon 按钮上的图标
 *
 */
- (void)setRightButtonIcon:(UIImage *)icon;

/**
 * 检查输入的有效性.
 */
- (BOOL)checkInputValidity;

/**
 * 过滤文本,只可输入数字,限定最大长度
 * 参数为相应 delegate 参数,maxLength 为最大长度
 */
- (BOOL)shouldChangeRange:(NSRange)range replacementString:(NSString *)string withMaxLength:(int)maxLength;

/**
 * 限定最大长度
 * @maxLength 最大长度,不包括 format 的空格
 */
- (BOOL)shouldChangeRange:(NSRange)range replacementString:(NSString *)string withFormatStringMaxLength:(int)maxLength;

代码示例

  • 普通输入框:

      AUInputBox *inputBox = [AUInputBox inputboxWithOriginY:startY inputboxType:AUInputBoxTypeNone];
      inputBox.titleLabel.text = @"提示文本";
      inputBox.textField.placeholder = @"请按提示输入";
      [self.view addSubview:inputBox];
  • 图片按钮:

      AUInputBox *iconInputBox = [AUInputBox inputboxWithOriginY:startY buttonIcon:image inputboxType:AUInputBoxTypeNone];
      iconInputBox.titleLabel.text = @"提示文本";
      iconInputBox.textField.placeholder = @"请按提示输入";
      [self.view addSubview:iconInputBox];