我有一个基于视图的应用程序,其中一个子视图中有一个 UIScrollView。当键盘出现和消失时,我编写了处理程序来调整滚动视图的大小。我希望在用户离开视图时关闭键盘,所以我打电话[currentField resignFirstResponder]
给viewWillDisappear
. 这会关闭键盘,但不会调用处理程序来调整滚动视图的大小(当我在其他地方调用相同的代码时,它会这样做)。有什么建议么?
编辑:这些是我使用的处理程序:
-(void) keyboardWasShown:(NSNotification*) notification
{
if(keyboardShown)
return;
NSDictionary* info=[notification userInfo];
NSValue* value=[info objectForKey:UIKeyboardFrameEndUserInfoKey];
CGSize keyboardSize=[value CGRectValue].size;
CGRect viewFrame=[scrollView frame];
viewFrame.size.height-=keyboardSize.height;
scrollView.frame=viewFrame;
keyboardShown=YES;
}
-(void) keyboardWasHidden:(NSNotification*) notification
{
NSDictionary* info=[notification userInfo];
NSValue* value=[info objectForKey:UIKeyboardFrameEndUserInfoKey];
CGSize keyboardSize=[value CGRectValue].size;
CGRect viewFrame=[scrollView frame];
viewFrame.size.height+=keyboardSize.height;
scrollView.frame=viewFrame;
keyboardShown=NO;
}
当我[currentField resignFirstResponder]
在其他任何地方调用时,它会毫无问题地调用处理程序。