我正在编写一个 iPhone 应用程序,并且我有一些 UITextfields 会在键盘出现时被覆盖;因此,我将 UITextFields 放在 aUIScrollView
中,并将自己设置为委托,这样当键盘变为活动状态时,就会调用此方法:
-(void) textFieldDidBeginEditing:(UITextField *)textField
{
self.myScrollView.contentSize = CGSizeMake(self.myScrollView.contentSize.width, 560);
[self.myScrollView setContentOffset:CGPointMake(0, 200) animated:YES];
}
请注意,我将 contentSize 设置得更高,这样即使文本字段成为焦点,用户仍然可以滚动。
同样,当文本字段退出第一响应者状态时,将调用此方法:
-(void) textFieldDidEndEditing:(UITextField *)textField
{
[self.myScrollView setContentOffset:CGPointMake(0, 0) animated:YES];
self.myScrollView.contentSize = CGSizeMake(self.myScrollView.contentSize.width,self.myScrollView.frame.size.height);
}
请注意,一旦放下键盘,所有内容都可见,因此无需启用滚动(contentSize = frame.size)。
但是,我的问题是因为我在设置 contentOffset 之后立即设置 contentSize,所以 setContentOffset 动画没有时间完成。相反,动画看起来非常生涩。有什么建议么?