TextView,TextField,slider,segmented Control等各类控件的使用

一,本次实例中涉及到 TextView,TextField,slider,switch,segmented Control这几个按钮的使用,涉及界面如下图所示,具体操作与效果将随后介绍:



二,switch,segmented Control的使用:

1,从对象库中拖取一个Label标签,两个switch控件和一个segmented Control控件到故事版中;


2,将Label标签和两个switch控件定义为输出口,分别定义为:switchValue,leftSwitch,rightSwitch:

@property (strong,nonatomic) IBOutletUILabel *switchValue;

@property (strong,nonatomic) IBOutletUISwitch *leftSwitch;

@property (strong,nonatomic) IBOutletUISwitch *rightSwitch;


3,将左边的switch控件定义为动作,命名为:valueChanged方法,再按control键,将右边的switch控件拖向创建的valueChanged方法中,使之与该方法相关联,再在 .m文件中实现该方法:

- (IBAction)valueChanged:(UISwitch *)sender;

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

   UISwitch *witchSwitch=(UISwitch *)sender;

   BOOL setting=witchSwitch.isOn;

    [self.leftSwitchsetOn:setting animated:YES];

    [self.rightSwitchsetOn:setting animated:YES];

}

注:(1),该方法可使两个switch控件能够同时开,或者同时关闭,即同时处于YES状态,或者NO状态;
       (2),第一次做实例时,只是定义左边switch控件为动作,而没有将右边switch控件与之关联起来,导致上述方法运行后,两个控件不能同时开或者关闭;

4,将segmented Control控件定义为动作,命名为:touchDown,再在.m文件中实现该方法:

- (IBAction)touchDown:(UISegmentedControl *)sender;


- (IBAction)touchDown:(UISegmentedControl *)sender {

    

   if ([sender selectedSegmentIndex]==0) {

       self.leftSwitch.hidden=NO;

       self.rightSwitch.hidden=NO;

       self.switchValue.text=@"YES";

    }else{

       self.leftSwitch.hidden=YES;

       self.rightSwitch.hidden=YES;

       self.switchValue.text=@"NO";

    

    }

    

}

注:(1),该方法可使segmented控件控制两个switch控件和label标签,当点击segmented Control中的YES时,两个switch控件保持开状态,label显示YES,当按segmented Control中的NO时,两个switch控件隐藏,且label显示NO,如图:


(2),在之前几次练习该实例过程中,总是出现错误,问题可能出在输出口上,我设计了输出口,后台会自动生成一些代码,但后来自己手动改动了输出口,后台程序没有改变,从而导致一些错误;


三,slider控件的使用:

1,从对象库中拖取label和slider控件到界面中,将label设置为输出口,名为sliderValue,将slider设置为动作,命名为slider ValueChanged,该方法能或许滑块到滑动值,并赋给sliderValue.text,使得label标签能够显示滑块的滑动值:

@property (strong,nonatomic) IBOutletUILabel *sliderValue;

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


- (IBAction)sliderValueChanged:(UISlider *)sender {

    

   UISlider *slider=(UISlider *)sender;

   int progressValue=(int) (slider.value*100);

   NSString *newText=[NSStringstringWithFormat:@"sliderValue:%d",progressValue];

   self.sliderValue.text=newText;

    

}


注:这个控件做起来还比较简单,当时一次性做对了。


四,TextView,TextField及键盘的开关:

1,从对象库中拖入三个Label标签,一个TextView控件和两个TextField控件,如上图所示;

2,在两个TextField的placeholder属性中键入“type in a name”“type in a number”,初始化文本框内容,当点击name后的textfield或者textview时,键盘会弹出,我们可以点击键盘,输入内容;


3,右击textField,点击delegate后的小圆点,用鼠标将其拖拽至左边的View Controller中,以同样的方式将TextView控件的delegate后的小圆点拖拽至View Control中。这是因为在ViewController.h文件中,UIViewController实现了两个委托UI TextFieldDelegate和UI TextViewDelegate,我们需要将委托对象viewController分配给TextView和TextField控件的委托属性delegate,借助委托来相应事件。

4,iOS设备上的键盘是虚拟键盘,而非物理键盘,因此我们需要做一些额外的操作来使得我们中完成输入工作后,键盘退出。当textView和TextField处于编辑状态时,这些控件就会变成“第一相应者”,若要关闭键盘,就要放弃第一响应者的身份,代码如下:

 @property (strong,nonatomic) IBOutletUITextField *nameField;

#pragma mark - UITextFiledDelegate Method

-(BOOL)textFieldShouldReturn:(UITextField *)textField{

    [textField resignFirstResponder];

    return YES;

}


#pragma mark - UITextFiledDelegate Method

-(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text{

   if([text isEqualToString:@"\n"]){

        [textViewresignFirstResponder];

       return NO;

    }

    return YES;

}

注:教材中讲的有些不清楚,刚开始做这个键盘开关的例子时,出现错误。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值