iOS积累--textField获取键盘高度以及限制字数

xiaoxiao2021-02-28  66

获取键盘: 方法: 增加监听, 当键盘出现或改变时收到消息 注意:需要在dealloc里面注销通知

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil]; //键盘将要出现时响应 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];// 键盘将要退出时响应 // 当键盘出现或改变时调用 - (void)keyboardWillShow:(NSNotification *)nofi{ // 获取键盘高度 NSDictionary *userInfo = [nofi userInfo]; NSValue *value = [userInfo objectForKey:UIKeyboardFrameEndUserInfoKey]; CGRect keyboardRect = [value CGRectValue]; int height = keyboardRect.size.height; }

限制字数

// 直接给textfield增加监听 [self.nameTF addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];

方法:

// 限制文字输入 -(void)textFieldDidChange:(UITextField *)textField{ NSString *toBeString = textField.text; // 键盘输入模式 //获取高亮部分 UITextRange *selectedRange = [textField markedTextRange];UITextPosition *position = [textField positionFromPosition:selectedRange.start offset:0]; // 没有高亮选择的字,则对已输入的文字进行字数统计和限制 if (!position) { if (toBeString.length > MAX_STARWORDS_LENGTH) { NSRange rangeIndex = [toBeString rangeOfComposedCharacterSequenceAtIndex:MAX_STARWORDS_LENGTH]; if (rangeIndex.length == 1) { textField.text = [toBeString substringToIndex:MAX_STARWORDS_LENGTH]; } else { NSRange rangeRange = [toBeString rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, MAX_STARWORDS_LENGTH)]; textField.text = [toBeString substringWithRange:rangeRange]; } } } }

参考博客: http://www.jianshu.com/p/2d1c06f2dfa4

转载请注明原文地址: https://www.6miu.com/read-81058.html

最新回复(0)