我正在处理横向视图中的应用。我正在使用一些UITextFields,当双击它时,它将使您能够编辑TextFields。我的问题是如何让屏幕滚动,这样用户可以在键盘显示时编辑整个屏幕?
答案 0 :(得分:0)
您可以使用uitextfield委托方法。
`- (void)textFieldDidBeginEditing:(UITextField *)textField
{
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.4];
self.view.center=CGPointMake(self.view.center.x, self.view.center.y+60);
[UIView commitAnimations];
}
- (void)textFieldDidEndEditing:(UITextField *)textField
{
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.4];
self.view.center=CGPointMake(self.view.center.x, self.view.center.y-60);
[UIView commitAnimations];
} `
答案 1 :(得分:0)
您可以在此link引用解决方案。基本上,您需要按金额移动滚动视图,以便显示文本字段。在yout textfieldbeginediting中调用下面的方法。
- (void)scrollViewToCenterOfScreen:(UIView *)theView {
CGFloat viewCenterY = theView.center.y;
CGRect applicationFrame = [[UIScreen mainScreen] applicationFrame];
CGRect keyboardBounds = CGRectMake(0, 280, 320, 200);
CGFloat availableHeight = applicationFrame.size.height - keyboardBounds.size.height; // Remove area covered by keyboard
CGFloat y = viewCenterY - availableHeight / 2.0;
if (y < 0) {
y = 0;
}
scrollview.contentSize = CGSizeMake(applicationFrame.size.width, applicationFrame.size.height + keyboardBounds.size.height);
[scrollview setContentOffset:CGPointMake(0, y) animated:YES];
}
答案 2 :(得分:0)
使用contentInset
和scrollRectToVisible
对我很有帮助。下面的代码将滚动视图保护为不受键盘覆盖,然后滚动内容以显示文本字段。
- (void)keyboardWillShow:(NSNotification *)aNotification
{
CGRect kbFrame;
[[aNotification.userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] getValue:&kbFrame];
float kbHeight = [self convertRect:kbFrame fromView:nil].size.height;
float d = kbHeight - self.frame.origin.y / self.transform.a;
d = d < 0 ? 0 : d;
UIEdgeInsets contentInsets = UIEdgeInsetsMake(0.0, 0.0, d, 0.0);
self.contentInset = contentInsets;
self.scrollIndicatorInsets = contentInsets;
UIView *responder = /* ... your text field ... */
[self scrollRectToVisible:responder.frame animated:YES];
[self performSelector:@selector(flashScrollIndicators) withObject:nil afterDelay:0.0];
}
- (void)keyboardWillHide:(NSNotification *)aNotification
{
NSTimeInterval animationDuration;
UIViewAnimationCurve animationCurve;
[[aNotification.userInfo objectForKey:UIKeyboardAnimationCurveUserInfoKey] getValue:&animationCurve];
[[aNotification.userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey] getValue:&animationDuration];
[UIView animateWithDuration:animationDuration
delay:0
options:animationCurve
animations:^{
self.contentInset = UIEdgeInsetsZero;
self.scrollIndicatorInsets = UIEdgeInsetsZero;
}
completion:nil];
[self setContentOffset:CGPointMake(0, 0) animated:YES];
self.scrollEnabled = NO;
}