/*! 第三方键盘回调三次问题,监听仅执行最后一次 */
if(begin.size.height > 0 && (begin.origin.y - end.origin.y > 0))
{
keyBoardHeight = curkeyBoardHeight;
[UIView animateWithDuration:duration animations:^{
CGRect viewFrame = [self getCurrentViewController].view.frame;
viewFrame.origin.y -= keyBoardHeight;
[self getCurrentViewController].view.frame = viewFrame;
}];
}
在这里处理这个键盘弹起事件中第一次获取键盘的高度,然后就直接把上面的view给弹上去,这样就避免了第三方键盘会来回调用多次方法,造成键盘弹起异常的问题就迎刃而解了!
4、如果这样还不能解决你的键盘问题,还有中万能方法:
平时可能遇到这种需求:点击一个按钮,弹出评论框和键盘,这时你就需要这样处理了:
1、创建一个 TextField、TextField2,把TextField位置放到屏幕外面看不到的地方,TextField 有个属性,用法如下:
self.replyTextField.inputAccessoryView = self.replyTextField2;
需要添加target 事件:
复制代码
[self.replyTextField addTarget:self action:@selector(replyTextFieldChanged:) forControlEvents:UIControlEventEditingChanged];
事件方法处理:
- (void)replyTextFieldChanged:(UITextField *)textField
{
NSLog(@"textFieldShouldBeginEditing输入内容****:%@", textField.text);
if (textField != self.replyTextField2)
{
self.replyTextField2.text = textField.text;
}
NSLog(@"textFieldShouldBeginEditing输入内容1:%@", self.replyTextField.text);
NSLog(@"textFieldShouldBeginEditing输入内容2:%@", self.replyTextField2.text);
}
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
[self.replyTextField resignFirstResponder];
[self.replyTextField2 resignFirstResponder];
[[self getCurrentViewController].view endEditing:YES];
if (self.clickIndexBlock)
{
self.clickIndexBlock(self.replyTextField2.text);
self.replyTextField.text = @"";
self.replyTextField2.text = @"";
}
return YES;
}
这样处理,不管你的键盘在哪里,输入框都会跟着你的键盘走,而且不会再出现错位,计算不准确的地方!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持ASPKU。
注:相关教程知识阅读请移步到IOS开发频道。










