我正试图在键盘出现时向上移动我的视图,然后再次向下移动消失。 键盘第一次出现时,它按预期工作。当我按下“完成”时,键盘消失,视图向后移动。但是,在初始编辑之后,单击textfiled不会执行任何操作。键盘根本没有出现。
我写的viewDidLoad
方法:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidShow:) name:UIKeyboardDidShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidHide:) name:UIKeyboardDidHideNotification object:nil];
并实施了以下代表:
- (void)keyboardDidShow:(NSNotification *)notification
{
//Assign new frame to your view
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.3];
NSDictionary* info = [notification userInfo];
CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
[self.view setFrame:CGRectMake(0,-kbSize.height,320,460)];
[UIView commitAnimations];
}
-(BOOL)textFieldShouldReturn:(UITextField *)textField {
[self.view endEditing:YES];
return NO;
}
-(void)keyboardDidHide:(NSNotification *)notification
{ [UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.3];
[self.view setFrame:CGRectMake(0,0,320,460)];
[UIView commitAnimations];
}
答案 0 :(得分:0)
我不建议你为它移动self.view。将所有子视图放在scrollview或tableview上,并在其上指定此类。
答案 1 :(得分:0)
您需要在UITextfield上实现resignFirstResponder,以便可以再次启动键盘。在您的实现中,您可以将以下行添加到textFieldShouldReturn方法:
[textfield resignFirstResponder];
答案 2 :(得分:0)
如果您将-textFieldShouldReturn
方法更改为以下方法,则应该有效。
-(BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return YES;
}
根据文件:
通过返回NO,您可以阻止用户切换到另一个控件
返回NO,继续关注控件,所以我假设下次你点击textFiled没有任何反应,因为系统认为控件已经集中。