请帮助我!!
有两个类,FirstViewCtrl和SecondViewCtrl。在FirstViewCtrl中,我有UIView,我在{`里面放了一个UIScrollVIew
。在SecondViewCtrl中我有UIView(由3个TextField组成)。
现在,我将来自SecondViewCtrl的UIView
链接到FirstViewCtrl [_bgScrollView addSubview:SecondViewCtrl.view];
到目前为止一切正常。 我想在这里完成一项小任务,当用户单击TextField时,弹出键盘布局并且背景屏幕应该向上移动(我的意思是键盘不应该隐藏TextField)。 我之前已经实现了它,但这里对我来说看起来有点不同。 因为UIScrollView位于FirstViewCtrl中,而TextField位于SecondViewCtrl(即UIView)中。我可以在SecondViewCtrl中获取textFieldShouldReturn。如何在这里移动BG屏幕?
简单来说,_bgScrollView
在FirstViewCtrl中,但我在SecondViewCtrl中处理TextField。当用户选择TextField时,如何移动背景?
我真的很困惑,请帮帮我!!!!
答案 0 :(得分:0)
您可以通过创建_bgScrollView作为FirstViewController的UIScrollView
来访问SecondViewController中的_bgScrollView(property
)。
in FirstViewController.h
UIScrollView *_bgScrollView;
@property (nonatomic, retain) UIScrollView *_bgScrollView;
in FirstViewController.m
@synthesize *_bgScrollView;
现在,您可以使用_bgScrollView作为FirstViewController的属性来访问SecondViewController中的_bgScrollView。另外,要滚动_bgScrollView,您可以使用此功能 -
- (void)scrollViewToCenterOfScreen:(UIView *)theView {
CGFloat viewCenterY = theView.center.y;
CGRect applicationFrame = [[UIScreen mainScreen] applicationFrame];
CGFloat availableHeight = applicationFrame.size.height - 200;
CGFloat y = viewCenterY - availableHeight / 2.0;
if (y < 0) {
y = 0;
}
[scrollView setContentOffset:CGPointMake(0, y) animated:YES];
}
答案 1 :(得分:0)
Text, Web, and Editing Programming Guide for iOS中使用示例代码描述了防止键盘覆盖文本字段的一般过程。您需要订阅键盘显示/隐藏通知并调整滚动视图的contentInset
属性。
如果您不希望第二个视图控制器知道您的第一个视图控制器,您可以向上走视图层次结构以查找滚动视图。例如:
- (UIScrollView *)scrollViewContainingView:(UIView *)view {
for ( ; view; view = view.superview) {
if ([view isKindOfClass:[UIScrollView class]])
return (UIScrollView *)view;
}
return nil;
}