所以我有一个导航控制器,在其中我有一个视图和一个嵌入在该视图中的滚动视图。我的目标是让我的程序在靠近它时滚动到某个位置。为此,我将网点添加到我的 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 甚至从未运行过,所以显然出了点问题。
我对此很陌生,任何帮助都会很棒!