使用iOS SDK:
我有一个UIView
带有UITextField
键盘的s.我需要它能够:
UIScrollView
一旦键盘出现,允许滚动内容以查看其他文本字段
自动"跳跃"(通过向上滚动)或缩短
我知道我需要一个UIScrollView
.我已经尝试将我的类更改UIView
为a UIScrollView
但我仍然无法向上或向下滚动文本框.
我需要a UIView
和a UIScrollView
吗?一个进去另一个吗?
需要实现什么才能自动滚动到活动文本字段?
理想情况下,尽可能多的组件设置将在Interface Builder中完成.我只想编写需要它的代码.
注意:我正在使用的UIView
(或UIScrollView
)是由tabbar(UITabBar
)启动的,它需要正常运行.
编辑:我正在添加滚动条,仅用于键盘出现时.即使它不需要,我觉得它提供了更好的界面,因为用户可以滚动和更改文本框.
我已经让它工作,我改变UIScrollView
了键盘上下的框架大小.我只是使用:
-(void)textFieldDidBeginEditing:(UITextField *)textField {
//Keyboard becomes visible
scrollView.frame = CGRectMake(scrollView.frame.origin.x,
scrollView.frame.origin.y,
scrollView.frame.size.width,
scrollView.frame.size.height - 215 + 50); //resize
}
-(void)textFieldDidEndEditing:(UITextField *)textField {
//keyboard will hide
scrollView.frame = CGRectMake(scrollView.frame.origin.x,
scrollView.frame.origin.y,
scrollView.frame.size.width,
scrollView.frame.size.height + 215 - 50); //resize
}
Run Code Online (Sandbox Code Playgroud)
但是,这不会自动"向上移动"或将可见区域中的下部文本字段居中,这是我真正想要的.
我有一个应用程序,在Interface Builder中,我设置了一个UIView
在视图底部附近有文本字段的应用程序.当我运行应用程序并尝试在该字段中输入文本时,键盘会向上滑动到字段上方,所以在我再次隐藏键盘之前,我无法看到我正在键入的内容.
有没有其他人遇到这个问题并找到一个很好的方法来解决它,既没有使父视图可滚动或移动文本字段更远的屏幕?
我目前正在开发一个带有单个视图的iPhone应用程序,它有多个UITextField用于输入.键盘显示时,它覆盖底部文本字段.所以我添加了相应的textFieldDidBeginEditing:
方法,将视图向上移动,效果很好:
- (void)textFieldDidBeginEditing:(UITextField *)textField {
if ( ( textField != inputAmount ) && ( textField != inputAge ) ) {
NSTimeInterval animationDuration = 0.300000011920929;
CGRect frame = self.view.frame;
frame.origin.y -= kOFFSET_FOR_KEYBOARD;
frame.size.height += kOFFSET_FOR_KEYBOARD;
[UIView beginAnimations:@"ResizeForKeyboard" context:nil];
[UIView setAnimationDuration:animationDuration];
self.view.frame = frame;
[UIView commitAnimations];
}
}
Run Code Online (Sandbox Code Playgroud)
如果消息源是键盘显示时可见的文本字段之一,则此方法检查,如果不是,则向上移动视图.
我还添加了textFieldDidEndEnditing:
方法,它再次向下移动视图(并根据更改的输入更新一些模型对象):
- (void)textFieldDidEndEditing:(UITextField *)textField {
if ( ( textField != inputMenge ) && ( textField != inputAlter ) ) {
NSTimeInterval animationDuration = 0.300000011920929;
CGRect frame = self.view.frame;
frame.origin.y …
Run Code Online (Sandbox Code Playgroud) uitextfield ×3
ios ×2
iphone ×2
objective-c ×2
cocoa-touch ×1
keyboard ×1
uikeyboard ×1
uiscrollview ×1