0

所以我有一个导航控制器,在其中我有一个视图和一个嵌入在该视图中的滚动视图。我的目标是让我的程序在靠近它时滚动到某个位置。为此,我将网点添加到我的 vc 中。一个是滚动视图,另一个是视图。该视图只是一个大矩形,大约是 iphone 屏幕的两倍,并且略高。我的滚动视图仅水平滚动,每当我从滚动中抬起手指时,我的目标是 iphone 边界是否在视图边界内。我希望滚动视图手动滚动到该视图的中间。(如果你能想到愤怒的小鸟中的游戏菜单或剪断绳子,当用户在水平包之间滚动时,当用户从滚动到某个位置时,用户放手时,这是我想模仿的)。

所以,这是我的视图和我的 vc 的代码。我对故事板所做的唯一一件事就是连接了两个插座,并设置了我的视图大小。

(关卡包是vc,另一个是view)。

#import <UIKit/UIKit.h>
#import "HorizantalLockingView.h"
@interface LevelPacks : UIViewController <ViewDelegate>
@property (weak, nonatomic) IBOutlet UIScrollView *scrollView;
@property (weak, nonatomic) IBOutlet HorizantalLockingView *lockingView;

@end


#import "LevelPacks.h"


@implementation LevelPacks 
@synthesize scrollView=_scrollView;
@synthesize lockingView = _lockingView;



-(void)viewDidAppear:(BOOL)animated
{
    CGSize size;
    size.width=825;
    size.height=460;
    self.scrollView.contentSize=size;

    self.scrollView.contentOffset=CGPointMake(0, 0);

}




-(void)viewDidLoad
{
    [super viewDidLoad];
    self.lockingView.delegate=self;
}

- (void)viewDidUnload
{
    [self setLockingView:nil];
    [super viewDidUnload];
    self.scrollView=nil;
    // Release any retained subviews of the main view.
}

@结尾

#import <UIKit/UIKit.h>
@protocol ViewDelegate
@property (nonatomic, weak) UIScrollView *scrollView;
@end

@interface HorizantalLockingView : UIView
@property (nonatomic, weak) IBOutlet id <ViewDelegate> delegate;
@end

#import "HorizantalLockingView.h"

@implementation HorizantalLockingView
@synthesize delegate=_delegate;


- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code
    }
    return self;
}
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    CGRect location=self.superview.bounds;
 NSLog(@"dkfjdkjf");
    if (CGRectContainsRect(self.frame, location))
    {

        [self.delegate.scrollView scrollRectToVisible:CGRectMake(284, 190, 157, 119) animated:YES];
    }




}






@end

o,我之前做了 nslog 以查看该方法是否会做任何事情,而 nslog 甚至从未运行过,所以显然出了点问题。

我对此很陌生,任何帮助都会很棒!

4

1 回答 1

0

启用分页将自动为您执行此操作。

scrollView.pagingEnabled=YES; 

还添加一个UIPageControl和使用UIScrollView委托方法来更新页面控件将增加一个很好的可用性

于 2012-08-02T19:40:57.493 回答