oc之封装「可输入值」的UIStepper

Posted sundaysgarden

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oc之封装「可输入值」的UIStepper相关的知识,希望对你有一定的参考价值。

2017.07.17 18:10* 字数 66 阅读 644评论 0喜欢 5

oc之封装「可输入值」的UIStepper

 

技术分享图片

最终效果

要求:

  • Platform: ios7.0+
  • Language: Objective-C
  • Editor: Xcode6.0+

实现

  • 思路
    UIButton + UITextField + UIButton + NSLayoutConstraint
  • 核心代码
    1. setters

#pragma mark - setters

 

// 当前值

-(void)setValue:(double)value{

    if (value < _minValue) {

        value = _minValue;

    }

    else if (value > _maxValue){

        value = _maxValue;

    }

    

    _minusBtn.enabled = value > _minValue;

    _plusBtn.enabled = value < _maxValue;

    _valueTF.text = [NSString stringWithFormat:@"%.0f",value];

        

    _value = value;

    

    _valueChanged ? _valueChanged(_value) : nil;

}

 

// 最大值

-(void)setMaxValue:(double)maxValue{

    if (maxValue < _minValue) {

        maxValue = _minValue;

    }

    _maxValue = maxValue;

}

 

// 最小值

-(void)setMinValue:(double)minValue{

    if (minValue > _maxValue) {

        minValue = _maxValue;

    }

    _minValue = minValue;

}

 

// 是否可输入值

-(void)setIsValueEditable:(BOOL)isValueEditable{

    _isValueEditable = isValueEditable;

    

    _valueTF.enabled = _isValueEditable;

}

2. 事件处理

#pragma mark - action

// 按钮点击

-(void)actionForButtonClicked: (UIButton*)sender{

    if ([sender isEqual:_minusBtn]) {

        self.value = _value - _stepValue;

    }

    else if([sender isEqual:_plusBtn]){

        self.value = _value + _stepValue;

    }

}

 

// 输入事件

-(void)actionForTextFieldValueChanged: (UITextField*)sender{

    if ([sender isEqual:_valueTF]) {

        self.value = [sender.text doubleValue];

    }

}

  • 用法: 支持xibinitWithFrame

- (void)viewDidLoad {

    [super viewDidLoad];

 

// 值改变回调

    _stepper.valueChanged = ^(double value) {

        _label.text = [NSString stringWithFormat:@"%.f",value];

    };

}

github

https://github.com/BackWorld/HYStepper



以上是关于oc之封装「可输入值」的UIStepper的主要内容,如果未能解决你的问题,请参考以下文章

IOS-OC-基本控件之UITextField

(Object-C)学习笔记 --OC的内存管理封装继承和多态

OC常用知识点之陀螺仪测方向

12:面向对象三大特性(封装继承多态)之继承

高效 OC开发之系统框架

OC面向对象—封装