UITextView / UITextField的异同点

UITextField与UITextView对比

 UITextField继承UIControl

     1.文字永远是一行,不能显示多行文字

     2.有placehoder属性设置占位文字

     3.继承自UIControl

     4.监听行为

     1> 设置代理

     2> addTarget:action:forControlEvents:

     3> 通知:UITextFieldTextDidChangeNotification

 

 UITextView继承UIScrollView

     1.能显示任意行文字

     2.不能设置占位文字(可以通过创建个UILabel子控件来加载在UITextView上实现)

     3.继承自UIScollView

     4.监听行为

     1> 设置代理

     2> 通知:UITextViewTextDidChangeNotification

 

相同点:两者都可以监听系统键盘的变化,可以据此自定义键盘:注意:两者在点击编辑内容时,系统 自动加载系统键盘,要想自定义键盘,必须先取消第一响应者[UITextView / UITextField resignFirstResponder],然后设置inputView;如果想实现自定义键盘和系统的键盘的自由切换,需要在设置inputView时,这样设置:textView.inputView = textView.inputView == nil ? emoticonKeyboardView : nil,然后恢复第一响应者[UITextView / UITextField becomeFirstResponder],即可实现键盘的自由切换。

键盘事件

使用场景:

  • 计算键盘的高度,调整UI布局
  • 根据键盘显示隐藏执行UI的动画


键盘监听代码如下:(self.toolBar是自定义的键盘,继承至UIToolBar)

- (void)regiserNotification{

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillChange:) name:UIKeyboardWillChangeFrameNotification object:nil];

}

 

- (void)keyboardWillChange:(NSNotification *)notification{

    NSLog(@"%@",notification);

    CGRect rect = [[[notification userInfo]objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];

    NSLog(@"%f---",rect.origin.y);

    CGFloat offsetY = - kScreenHeight + rect.origin.y;

    NSLog(@"---offsetY %f",offsetY);

    [self.toolBar mas_updateConstraints:^(MASConstraintMaker *make) {

        make.bottom.mas_equalTo(offsetY);

    }];

    [self.view layoutIfNeeded];

}

 

- (void)dealloc{

    [[NSNotificationCenter defaultCenter] removeObserver:self];

}

转载于:https://my.oschina.net/llfk/blog/739849

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值