将UIButton添加到UIScrollView会阻止它滚动

时间:2013-04-28 17:50:47

标签: objective-c button uiscrollview uibutton scrollview

我对编程和目标C都很陌生,所以你必须对我很轻松。我确定应用程序中的一些代码可能是不必要的。我搜索了谷歌和StackOverflow的答案,但没有一个解决方案对我有用,要么是因为它们不是正确的解决方案,要么我只是误解了答案。

问题在于,当我添加一个非常长的图像并且我想仅垂直滚动时,它最初拒绝滚动,直到我更改一个名为“垂直空间(-1678)的”约束“ - 滚动视图 - 图像视图 - Ruler pic.png“为0,原因我不知道。我甚至不明白为什么它默认为-1678。

无论如何,它然后完美地工作,直到我在故事板中添加UIButton(我后来想要添加一个模态“动作segue”,以便它将转到另一个视图)。当我添加UIButton时,它将不会在模拟器中滚动。

我想我一定做错了,因为我只输入了一行关于按钮的代码(声明它),或者我可能需要添加更多代码才能滚动它。我不知道!如果您需要更多信息以帮助我乐意提供它。我厌倦了努力让它发挥作用。提前谢谢。

ViewController.h

#import <UIKit/UIKit.h>
#import <iAd/iAd.h>

@interface ViewController : UIViewController <ADBannerViewDelegate, UIScrollViewDelegate> {

ADBannerView *adView;
BOOL bannerIsVisible;
IBOutlet UIScrollView *scrollView;
IBOutlet UIImageView *imageView;
IBOutlet UIButton *proVersion;

}

@property (nonatomic, assign) BOOL bannerIsVisible;
@property (nonatomic, retain) IBOutlet UIScrollView *scrollView;
@property (nonatomic, retain) IBOutlet UIImageView *imageView;

@end

ViewController.m

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

@synthesize bannerIsVisible;
@synthesize scrollView;
@synthesize imageView;

- (void)viewDidLoad
{
[super viewDidLoad];

// Hide status bar:
[[UIApplication sharedApplication] setStatusBarHidden:YES];

// iAd:
adView = [[ADBannerView alloc] initWithFrame:CGRectZero];
adView.frame = CGRectOffset(adView.frame, 0, -50.0f);
[self.view addSubview:adView];
adView.delegate=self;
self.bannerIsVisible=NO;

}

-(void)bannerViewDidLoadAd:(ADBannerView *)banner
{
if (!self.bannerIsVisible) {

    [UIView beginAnimations:@"animateAdBannerOn" context:NULL];
    banner.frame = CGRectOffset(banner.frame, 0, 50.0f);
    [UIView commitAnimations];
    self.bannerIsVisible = YES;

    }
}

 -(void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error
{
if (self.bannerIsVisible) {

    [UIView beginAnimations:@"animateAdBannerOff" context:NULL];
    banner.frame = CGRectOffset(banner.frame, 0, -50.0f);
    [UIView commitAnimations];
    self.bannerIsVisible = NO;

}
}

- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}

@end

2 个答案:

答案 0 :(得分:0)

您需要设置ContentSize的{​​{1}},如下所示:

ScrollView

答案 1 :(得分:0)

我玩了一下,在答案中摆弄了这个例子,我得到了这段代码:

scrollView.contentSize = CGSizeMake(320,2246);

哪个有效!我花了几天时间研究它,这只是一个小小的代码行。我把它放到viewDidLoad中,突然间它滚动了。我也不得不转向“AutoLayout”。