Objective c 无法在iOS中实现简单视图滚动
我很难在我的详细视图上实现一个简单的滚动 该应用程序具有主视图和详细视图,非常简单 当用户点击Master上的某个项目时,将使用较大的照片、博客文本等推送详细视图 我想滚动整个详细视图,这样如果图片很高,或者文本很长,他们可以垂直滚动以查看/阅读更多内容。我不希望用户单独滚动这些项目。它应该感觉像网页滚动 当前我的详细视图加载正常,但我无法使其滚动 MyDetailViewController.hObjective c 无法在iOS中实现简单视图滚动,objective-c,ios,ios5,uiview,uiscrollview,Objective C,Ios,Ios5,Uiview,Uiscrollview,我很难在我的详细视图上实现一个简单的滚动 该应用程序具有主视图和详细视图,非常简单 当用户点击Master上的某个项目时,将使用较大的照片、博客文本等推送详细视图 我想滚动整个详细视图,这样如果图片很高,或者文本很长,他们可以垂直滚动以查看/阅读更多内容。我不希望用户单独滚动这些项目。它应该感觉像网页滚动 当前我的详细视图加载正常,但我无法使其滚动 MyDetailViewController.h #import <UIKit/UIKit.h> @interface
#import <UIKit/UIKit.h>
@interface DetailViewController : UIViewController {
IBOutlet UILabel *postTextLabel; // wired to Text Label
IBOutlet UILabel *postAuthorNameLabel; // wired to Author Label
}
@property (strong, nonatomic) id detailItem;
@end
IB上的结构:
有没有关于这项工作缺少什么的想法?我会做以下几点: 1) (可选)通过将视图拖动到侧面scruture列表中的视图中,将视图转换为滚动视图 2) 将scrollView链接到您的viewcontroller.h中,并建立如下的插座连接
@property (strong, nonatomic) IBOutlet UIScrollView *scroller;
(如果手动添加,请确保在.m中添加@synthesis)
并确保它已连接到IB
3) 在viewDidLoad方法中设置scrollview的contentsize
scroller.contentSize = CGSizeMake(320,550);
注:IBUILabel*postTextLabel;实际上应该是UITextView,这样您就可以访问ContentSize
这将考虑以下因素
CGRect frame = postTextLabel.frame;
frame.size = postTextLabel.contentSize;
postTextLabel.frame = frame;
scroller.contentSize = CGSizeMake(320, frame.size.height+200);//200 or how ever much space is above the textView
同样,只有在使用UITextView时,这才有效
对于ipad,将320替换为768或1024,或根据方向而定
在IB中连接它的最好方法是按住控件并拖动到.h文件
并确保它设置为自动,如图所示,并指向>视图的.h。
这样添加也会自动为您添加@synthesis
确保选中此处的UserInteractionEnabled以查看我们的滚动视图,因为没有足够的信息。但是1) 在
UIScrollView
中是否将scrollEnabled
设置为YES
?2) 您的UIScrollView
中的contentSize
是否大于frame
?3)将.h
、.m
和.xib
文件放在某个地方,我们可以看一下。@RobertVojta h和m文件如上所示-没有xib文件,因为我使用的是XCode 4.5-还有其他建议吗?然后.storyboard
如果您确实使用故事板。根据您的建议工作-我应该将第[3]项的代码放在哪里下面呢?解析器使用了未声明的标识符'scroller',你是说'u scroller'?
我在答案中添加了这个,因为我忘了提到它放在哪里了。你忘了添加@synthetic scroller代码>将其添加到.m文件的@implementation下,再次确保您已连接到IB!您必须添加按住控件并将一行从scrollview拖到实现的连接。。。。我会添加一个图片,如果你有问题连接它。
CGRect frame = postTextLabel.frame;
frame.size = postTextLabel.contentSize;
postTextLabel.frame = frame;
scroller.contentSize = CGSizeMake(320, frame.size.height+200);//200 or how ever much space is above the textView