2012-08-02 2 views
0

에 대한 위임 문제가 있으므로 탐색 컨트롤러가 있고 그 안에보기 및 해당보기에 포함 된 scrollview가 있습니다. 내 목표는 내 프로그램을 가까이에있을 때 위치로 스크롤하는 것입니다. 이 작업을 수행하려면 vc에 아웃렛에 추가해야합니다. 하나는 스크롤보기이고 다른 하나는보기입니다. 보기는 아이폰 화면의 약 두 배에 해당하는 약간 큰 직사각형이며 조금 더 높습니다. 내 스크롤보기는 단지 수평으로 만 스크롤되며, 스크롤 할 때마다 손가락을 들어 올리면 내 목표는 아이폰 범위가 뷰 범위 내에 있는지입니다. 스크롤 뷰가 수동으로 해당 뷰의 중간으로 스크롤되기를 원합니다. (화가 나는 새에서 게임 메뉴를 생각하거나 밧줄을자를 수있는 경우, 사용자가 레벨 팩 사이를 수평 적으로 스크롤 할 때, 사용자가 스크롤 할 때 스크롤을 해제하여 사용자가지나 가게하는 레벨로 이동하면이 내가 흉내 내고 싶은 것).내 탐색 컨트롤러

내 코드와 내 VC 모두에 대한 heres heres. 스토리 보드에서 내가 한 유일한 이유는 두 개의 콘센트를 연결하고 내보기의 크기를 설정했기 때문입니다.

(레벨 팩은 vc이고 다른 하나는보기입니다.)

#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. 
} 

@end

#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 

오, 나는 방법도 아무것도 할 것입니다 있는지 확인하기 위해 nslog 이전했다, 그리고 nslog은 심지어 분명히 잘못된 일도, 실행하지 마십시오.

이런 종류의 새로운 것들은 어떤 도움이 정말 좋을 것입니다!

+0

그것은 나에게 좋은 것 같다 (비록 장기적으로 사용하면 스케치 조금). 'userInteractionEnabled'가 제대로 설정되지 않았을 가능성이 있습니까? (또한 UIScrollview를 서브 클래 싱하여이 위임 된 말도 안되는 것을 생각 해보았습니까?) – CodaFi

+0

시도 했습니까? 스크롤보기에서 페이징을 사용하도록 설정 했습니까? 자동으로 수행합니다. –

+0

@jammycoder 멋진 경로가 그 길로갑니다! – bmende

답변

0

페이징을 사용하면 자동으로 수행됩니다.

scrollView.pagingEnabled=YES; 

는 또한 UIPageControl를 추가하고 좋은 사용성을 추가 할 페이지 제어를 업데이트 UIScrollView 위임 방법을 사용하여

관련 문제