zoukankan      html  css  js  c++  java
  • UIStepper UISlider UISwitch UITextField 基本控件

    1.UIStepper 步进控件 

    必掌握

    1.重要属性:

    .value 初始值

    .maximumValue 最大值

    .minimumValue 最小值

    .stepValue 间隔

    2.常用事件:

    ValueChanged事件:当数值改变时触发

     

    2 .UISlider 滑块控件

    快速滑动的方式得到一个可变数值

    1.重要属性:

    .value

    2.重要事件:

    ValueChanged事件:当数值改变时触发

        //显示滑块控件的初始值

        self.sliderLabel.text = [NSString stringWithFormat:@"%.2lf",self.slider.value];

    例:三个滑块控件控制一个label的渐变色,红、绿、蓝

    #import "ViewController.h"

    @interface  ViewController ()

    @property (weak, nonatomic) IBOutlet UISlider *redSlider;

    @property (weak, nonatomic) IBOutlet UISlider *greenSlider;//连接控件生成属性

    @property (weak, nonatomic) IBOutlet UISlider *blueSlider;

    @property (weak, nonatomic) IBOutlet UILabel *label;

    - (IBAction)changeRedColor:(UISlider *)sender;

    @end

    @implementation  ViewController

    - (void)viewDidLoad

    {

        [super viewDidLoad];

        self.label.backgroundColor =[UIColor colorWithRed:self.redSlider.value green:self.greenSlider.value blue:self.blueSlider.value alpha:1];

    }

    - (IBAction)changeRedColor:(UISlider *)sender

    {

        //三个控件共用一个方法,赋给label

        self.label.backgroundColor = [UIColor colorWithRed:self.redSlider.value green:self.greenSlider.value blue:self.blueSlider.value alpha:1];

    }

    @end

     效果如下:

    3. UISwitch 开关控件

    1.重要属性:

    .on (BOOL)   获取或设置开关的状态

    .enabled(BOOL) 获取或设置控件是否可用

     //修改switch状态

     [self.switchControl setOn:NO animated:YES];

     //设置switch不可用

     self.switchControl.enabled = NO;

    2.重要的事件:

    valueChanged事件

    例:两个开关。主控制辅,主开,则辅可以开关。主关,则辅不可操作

    - (IBAction)mainSwitchChanged:(UISwitch *)sender {

        //根据当前sender的状态来决定下面的switch的状态

        [self.otherSwitch setOn:sender.on animated:YES];

        //下面的switch能不能用,取决于sender的状态

        //sender 如果为YES,enabled为YES

        //sender 如果为NO,enabled为NO

        self.otherSwitch.enabled = sender.on;

    }

    4.UITextField 文本框控件

    4.1 是什么?

    是单行的文本输入框,支持用户的输入

    4.2 属性

    .text  获取或设置文本框内的文本

    4.3 系统弹出的键盘

    第一响应者:当用户触摸界面时,系统会根据手指触摸的位置层层定位到具体的控件,如果,本次触点在文本框控件的区域内,那么文本框就负责对本次的触碰事件进行响应,由于文本框比较特殊,所以系统自动将文本框设置为响应事件的第一关,并且自动弹出键盘。

     注意

    当用户点击屏幕后,首先开启的是查找hit-View的过程。从window开始,给所有直接子视图发hit-Test的消息,直到某一个控件没有子视图了,并且这个触点在这个子视图中,则返回这个控件,于是hit-View找到了

    找到hit-View后,view则成为了需要第一个为这个事件提供响应的对象,如果,该对象没有提供事件响应,则该事件对象会向视图的父视图继续传递,如果父视图依然没有提供响应,则继续向上传递,直到传递到UIApplication对象,依然没有处理的话,则抛弃该事件。这个过程叫做响应者链。

    4.4 如何关闭键盘

    方法一:让键盘放弃第一响应者的身份即可

    [self.textField resignFirstResponder];

    方法二:让键盘所在的父视图结束编辑状态

    [self.view endEditing:YES]; 

    4.5 什么时候关闭键盘呢?(关闭键盘的时机)

    时机一:点击键盘右下角的按键   选择Did End On Exit事件 为文本框添加一个事件

    时机二:点击屏幕的空白部分

      重写控制器的touchesBegan:withEvent:方法 (不用连接方法)

    例:

    在#import "ViewController.h"中

    @interface  ViewController ()

    @property (weak, nonatomic) IBOutlet UITextField *textField;

    @end

    @implementation  ViewController

    - (void)viewDidLoad

    {

        [super viewDidLoad];

        //self.textField.text = @"xxxxxxx";

    - (IBAction)openKeyboard:(UIButton *)sender {

        //让文本框成为第一响应者

        [self.textField becomeFirstResponder];

    }

    - (IBAction)closeKeyboard:(UIButton *)sender {

        //方式一:让文本框放弃第一响应者的身份

        //[self.textField resignFirstResponder];

        //方式二:让文本框的父视图放弃编辑状态

        [self.view endEditing:YES];

    }

    //时机一:点击键盘右下角的按键,该事件触发 键盘收起

    - (IBAction)tapReturn:(UITextField *)sender {

        //[sender resignFirstResponder];

        [self.view endEditing:YES];

    }

    //时机二:点击空白屏幕 键盘收起

    - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{

        [self.view endEditing:YES];

    }

    例如:实现如下界面:

    [输入框][发送按钮]

    1)当点击发送按钮后,界面上会出现一个UILabel,内容就是输入框中的内容,此时要求,收起键盘,清空输入框

    2)当用户点击键盘右下角的按键时,功能和1相同

    3)label本身设置为宽300,高40,距离左边20个点

    4)多个label不能重合

    在 #import "ViewController.h"中

    @interface  ViewController ()

    //发送按钮

    @property (weak, nonatomic) IBOutlet UIButton *sendButton;

    //文本框

    @property (weak, nonatomic) IBOutlet UITextField *textField;

    @property(nonatomic,assign)float y;

    @end

    @implementation ViewController

    - (void)viewDidLoad

    {

        [super viewDidLoad];

        // 设置按钮属性

        self.sendButton.backgroundColor=[UIColor redColor];

        self.y=210;

    }

    //点击发送按钮,响应事件

    - (IBAction)openKeyBound:(UIButton *)sender {

        UILabel*label=[[UILabel alloc]init];

        label.frame=CGRectMake(20, self.y,300, 40);

        label.text=[NSString stringWithFormat:@"发送结果:%@",self.textField.text];

        [self.view addSubview:label];

        self.y+=60;

        [self.view endEditing:YES];

        self.textField.text=nil;

    }

    //点击左下角收起键盘

    - (IBAction)tapReturn:(UITextField *)sender {

        UILabel*label=[[UILabel alloc]init];

        label.frame=CGRectMake(20,self.y,300, 40);

        label.text=[NSString stringWithFormat:@"文本框输入:%@",self.textField.text];

        [self.view addSubview:label];

        self.y+=60;

        [self.view endEditing:YES];

        self.textField.text=nil;

        [self.view endEditing:YES];

    }

    @end

    效果如下:

     

    实现功能:界面如下:

    [输入框 账号]

    [输入框 密码]

    [登录   按钮]

    [UILabel 显示当前状态(登录后显示用户名,没登录显示未登录)]

    1)用户输入完用户名和密码后,点击登录,判断是否可以登录,如果登录成功,label上显示当前用户的用户名,如果没有登录,显示未登录

    2)当用户没有填写用户名和密码时,点击登录,提供用户输入用户名和密码

    3)第一个textField支持Next功能,第二是Done

     在#import "ViewController.h"中

    @interface  ViewController ()

    @property (weak, nonatomic) IBOutlet UITextField *textUse;//文本框1连线

    @property (weak, nonatomic) IBOutlet UITextField *textPassword;//文本框2连线

    @property (weak, nonatomic) IBOutlet UILabel *labelShow;//显示登陆成功的连线

    @property (weak, nonatomic) IBOutlet UILabel *label;//显示输入有误的连线

    - (IBAction)frist:(UITextField *)sender;

    - (IBAction)done:(UITextField *)sender;

    - (IBAction)buttonValue:(UIButton *)sender;

    @end

    @implementation  ViewController

    - (void)viewDidLoad {

        [super viewDidLoad];

        self.view.backgroundColor=[UIColor greenColor];

    }

    - (IBAction)buttonValue:(UIButton *)sender {

      if([self.textUse.text isEqualToString:@"yang"]&&[self.textPassword.text isEqualToString:@"123"]){

        self.labelShow.text=@"yang用户登陆成功";

        self.label.text=@"";

        }

       else{

        self.label.text=@"用户名或密码错误";

        self.labelShow.text=@"未登录";

        }

        [self.view endEditing:YES];

        self.textUse.text=nil;

        self.textPassword.text=nil;

    }

    //实现next功能

    - (IBAction)frist:(UITextField *)sender {

        //文本框1连线,实现点回车到next功能

        [self.textPassword becomeFirstResponder];

    }

    - (IBAction)done:(UITextField *)sender {

        [self.view endEditing:YES];

    }

    @end

    效果界面如下:

     

  • 相关阅读:
    L298 猴子进化过程
    L296 EST 科技英语翻译-美学取向 (上)
    L295 how to turn down a job but keep a good relationship with the hiring manager
    L293 给地球降温
    2019.3.16错过的计算题-应用统计学
    L291
    L290 英语中级班-3月上
    L275 Climate Change Is Having a Major Impact on Global Health
    L273 NCAA
    leetcode 87 Scramble String ----- java
  • 原文地址:https://www.cnblogs.com/yhj1787354782/p/5051396.html
Copyright © 2011-2022 走看看