そのため、ナビゲーションコントローラーがあり、その中にビューとそのビューに埋め込まれたスクロールビューがあります。私の目標は、プログラムが近くにあるときにその場所にスクロールすることです。これを行うには、VC のアウトレットに追加しました。1 つはスクロール ビューで、もう 1 つはビューです。ビューは、iPhone の画面の約 2 倍の幅で、わずかに高い大きな長方形です。私のスクロールビューは水平方向にのみスクロールし、スクロールから指を離すたびに、iPhoneの境界がビューの境界内にあるかどうかが目標です。スクロール ビューをそのビューの中央まで手動でスクロールしたい。(怒っている鳥のゲームメニューやロープを切ることができる場合、ユーザーがレベルパック間を水平にスクロールしているとき、ユーザーがスクロールから手放すと、ユーザーが手放したレベルまでザップのように所定の位置に収まります。真似したいものです)。
したがって、ビューと VC の両方のコードを次に示します。ストーリーボードで行った唯一のことは、2 つのアウトレットを接続し、ビューのサイズを設定したことです。
(レベル パックは VC で、もう 1 つはビューです)。
#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は実行されなかったので、明らかに何かが間違っています.
私はこれに慣れていないので、どんな助けも本当に素晴らしいでしょう!