Iphone 在另一个类中使用ScrollView对象
请帮帮我 有两个类,FirstViewCtrl和SecondViewCtrl。在FirstViewCtrl中,我有一个UIView,并且在该``中放置了一个Iphone 在另一个类中使用ScrollView对象,iphone,ios,xcode,uiscrollview,Iphone,Ios,Xcode,Uiscrollview,请帮帮我 有两个类,FirstViewCtrl和SecondViewCtrl。在FirstViewCtrl中,我有一个UIView,并且在该``中放置了一个UIScrollVIew。在SecondViewCtrl中,我有UIView(由3个文本字段组成) 现在,我已经将该UIView从SecondViewCtrl链接到了FirstViewCtrl[\u bgcrollview addSubview:SecondViewCtrl.view] 直到现在一切都很好。 我想在这里实现一个小任务,当用户单
UIScrollVIew
。在SecondViewCtrl中,我有UIView(由3个文本字段组成)
现在,我已经将该UIView
从SecondViewCtrl链接到了FirstViewCtrl[\u bgcrollview addSubview:SecondViewCtrl.view]代码>
直到现在一切都很好。
我想在这里实现一个小任务,当用户单击文本字段时,键盘布局弹出,背景屏幕应该向上移动(我的意思是键盘不应该隐藏文本字段)。
我以前已经做到了,但在这里它看起来对我来说没有什么不同。
因为UIScrollView位于FirstViewCtrl中,而TextField位于SecondViewCtrl(即UIView)中。我可以在SecondViewCtrl中获取文本字段shouldReturn。如何在此处移动背景屏幕
简单地说,\u bgScrollView
在FirstViewCtrl中,但我在SecondViewCtrl中处理文本字段。当用户选择文本字段时,如何移动背景?
我在这里真的很困惑,请帮帮我 只需将“滚动视图”创建为FirstViewController的属性即可访问SecondViewController中的“滚动视图”(UIScrollView
)
in FirstViewController.h
UIScrollView *_bgScrollView;
@property (nonatomic, retain) UIScrollView *_bgScrollView;
in FirstViewController.m
@synthesize *_bgScrollView;
现在,您可以通过使用作为FirstViewController属性的_bgScrollView来访问SecondViewController中的_bgScrollView。此外,要滚动bGscroll视图,您可以使用此功能-
- (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];
}
-(void)滚动视图到EnterofScreen:(UIView*)视图{
CGFloat viewCenterY=视图中心y;
CGRect applicationFrame=[[UIScreen mainScreen]applicationFrame];
CGFloat availableHeight=applicationFrame.size.height-200;
CGFloat y=viewCenterY-可用高度/2.0;
如果(y<0){
y=0;
}
[scrollView setContentOffset:CGPointMake(0,y)动画:是];
}
中介绍了防止键盘覆盖文本字段的一般步骤,并附有示例代码。您需要订阅键盘显示/隐藏通知,并调整滚动视图的contentInset
属性
如果不想让第二个视图控制器了解第一个视图控制器,可以沿着视图层次结构查找滚动视图。例如:
- (UIScrollView *)scrollViewContainingView:(UIView *)view {
for ( ; view; view = view.superview) {
if ([view isKindOfClass:[UIScrollView class]])
return (UIScrollView *)view;
}
return nil;
}
您可能需要发布更深入、更易读的信息,但将cGraffeTransform
(假设您使用了CG动画)应用到SecondViewCtrl
是否有任何好处?请发布一些代码,这比解释更容易理解。我将发布一些代码,仅供参考,代码正在运行,我只需要在键盘布局弹出时移动背景,然后查看上面的第二段;在SecondViewCtrl-(BOOL)textField应返回:(UITextField*)textField{[textField resignFirstResponder];返回YES;}-(BOOL)textField应开始编辑:(UITextField*)textField{NSLog(@“Text Editing”);返回YES;}对不起,先生,我不明白您的意思,如何在SecondViewCtrl中使用它?实际上,我计划在SecondViewCtrl中使用UIScrollView对象,以便在键盘出现时可以向上滚动视图。您的FirstViewController和SecondViewController是UINavigation控制器的一部分吗?