解决UITextField字数限制和键盘遮盖问题

2016-09-27  本文已影响0人  小__小

首先我们来说一说字数限制的问题
由于TextField的代理方法

    [textfield addTarget:self action:@selector(textFieldValueChange:) forControlEvents:UIControlEventValueChanged];

其中textFieldValueChange是当textfield内容有变化时就会调用,下面我们开始在此方法中限制字数

-(void) textFieldValueChange:(UITextField *) textfield
{
//因为输入内容可能是汉字,所以要在没有高亮的时候,来获取当前输入框的内容,再去限制字数,否则会有crash
    UITextRange *textRange = [textView markedTextRange];
    UITextPosition *position = [textView positionFromPosition:textRange.start offset:0];
    if (!position)
    {
        NSString *textStr = textView.text;
        if (textStr.length>500)
        {
            textfield.text = [textStr substringToIndex:500];
        }
    }
}

下面来讨论键盘遮盖问题
这是我们常见到的状况,所以不做解释了,直接说解决方法。
首先我们添加一个键盘的NSNotification

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

然后在接收通知的地方获取键盘的y值变化,根据此y值来改变你需要改变的view

//解决键盘遮盖问题
-(void)keyboardDidChangeFrame:(NSNotification *)noti
{
    NSDictionary *userInfo = noti.userInfo;
    
    // 动画的持续时间
    double duration = [userInfo[UIKeyboardAnimationDurationUserInfoKey] doubleValue];
    
    // 键盘的frame
    CGRect keyboardF = [userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue];
    //键盘的Y值
    CGFloat keyboardY = keyboardF.origin.y;
    //根据键盘的Y值来改变你需要改变的View
}
上一篇 下一篇

猜你喜欢

热点阅读