2014-10-28 3 views
3

scroll1이라는 UISCrollView가 있습니다. scroll1 내에서 새로운 UIScrollViews 안에 래핑 된 이미지로로드 된 프로그래밍 방식으로 UIImageView를 생성합니다. 그래서 내 Architecture는 scroll1-> subView-> ImageView입니다. 내 응용 프로그램의 목적은 사용자가 상위 스크롤 뷰 (scroll1)를 스크롤하고 uiimages 변경 사항을 스크롤 할 때입니다.
UIImageViews와 함께 텍스트 데이터가 포함 된 UITextView가 나타납니다. 사용자가 스크롤 할 때 텍스트 값이 변경됩니다.
사용자가 스크롤하면 UIIextView가 ImageView 내부에 텍스트보기가 포함 된 것처럼 UIImageVIew 위에 머물러있게하고 싶습니다. 이야기 책의 페이지를 스크롤하는 것과 마찬가지로 텍스트가 스크롤 될 때 이미지가 고정 될 때까지 이미지가 사라집니다. 나는 다음과 같은 코드를 사용하고 있습니다 : 위의 코드가 작은 파단을 만드는 데 사용됩니다
UIScrollView 내 UITextView 고정

CGSize imageSize; 
imageSize.height = 693; 
imageSize.width = 512; 
self.scroll1.minimumZoomScale = 1.0; 
self.scroll1.maximumZoomScale = 1.0; 
self.scroll1.frame = CGRectMake(0,0,imageSize.width,imageSize.height); 
self.scroll1.scrollEnabled = YES; 
self.scroll1.contentSize = CGSizeMake(imageSize.width * imgs.count, imageSize.height); 
self.scroll1.pagingEnabled = YES; 

self.scroll1.delegate = self; 

for (int i = 0; i < pants; i++) 
{ 
    CGFloat x = i * 512; 
    subView = [[UIScrollView alloc]initWithFrame:CGRectMake(x, 0, 512, 693)]; 
    subView2 = [[UIScrollView alloc]initWithFrame:CGRectMake(x + 512, 0, 512, 693)]; 
    subView.clipsToBounds = NO; 
    subView2.clipsToBounds = NO; 
    UIImage *img = [imgs objectAtIndex:i]; 
    UIImage *img2; 
    if(i == pants - 1) img2 = [imgs objectAtIndex:i]; 
    else img2 = [imgs objectAtIndex:i+1]; 
    imageView = [[UIImageView alloc ] initWithImage:img]; 
    imageView2 = [[UIImageView alloc ] initWithImage:img2]; 
    // [imageView insertSubview:_leftText atIndex:-2]; 
    // [imageView insertSubview:_leftText atIndex:1]; 
    //[self.scroll1 insertSubview:_leftText aboveSubview:imageView]; 
    //imageView.frame = subView.bounds; 
    // [subView insertSubview:_leftText aboveSubview:imageView]; 

    subView.scrollEnabled = NO; 
    subView2.scrollEnabled = NO; 
    subView.userInteractionEnabled = NO; 
    subView2.userInteractionEnabled = NO; 
    [subView addSubview:imageView]; 
    [subView2 addSubview:imageView2]; 
    [subView setContentSize:CGSizeMake(512, 708)]; 
    [subView2 setContentSize:CGSizeMake(512, 708)]; 

    [self.scroll1 addSubview:subView]; 
    [self.scroll1 addSubview:subView2]; 
    //[self.scroll1 addSubview:_leftText]; 
} 

, leftText는 텍스트 뷰입니다.
그게 내가 그것을 추가하는 것이 자동으로 그것의 일부가 될 것이라고 생각했기 때문에 여러 가지 방법을 시도해 보았다 _leftText를 subView에 추가하고 그것은 임베디드되지만 표시되지 않거나 작동하지 않습니다. 난 다음 방법을 시도 :

- (void)scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
     [_leftText setContentOffset:self.scroll1.contentOffset animated:YES]; 


} 

을하지만 그 코드는 이상한 방법으로 텍스트 뷰 동작합니다을하고 사라집니다. 내가 성취 할 수있는 방법이 있기를 바랍니다. 많은 감사

+0

subView (2) 위의 self.scroll1의 하위 뷰로 여러 UITextField를 배치했다고 생각하십니까? – Astoria

+0

@Astoria yea 내가 했어. 그러나 나는 어디에도 나를 데려 가지 않았다. –

답변

1

각 하위 뷰 위에 여러 개의 UITextField 인스턴스를 삽입 해보십시오.

NSMutableArray *textFields=[NSMutableArray array]; 
for (int i=0; i<pants; i++) 
{ 
    CGFloat x=i * 512; 
    UIScrollView *scrollView=[[UIScrollView alloc] initWithFrame:frame]; 
    UIImageView *imageView =[[UIImageView alloc] initWithFrame:imageFrame]; 
    UITextField *textField =[[UITextField alloc] initWithFrame:textFrame]; 
    [scrollView addSubview:imageView]; 
    [scrollView addSubview:textField]; // put it above the imageView 
    [textFields addObject:textField]; 
} 

그래서 하나의 텍스트 필드 대신 여러 개의 텍스트 필드가 있습니다. 그런 다음 scrollViewDidScroll: 대리자 메서드에서 현재 텍스트 필드가 표시되는지 확인해야합니다. 이를 위해 스크롤속성을 사용하는 것이 좋습니다.

- (void)scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    CGRect visibleRect; 
    visibleRect.origin = scrollView.contentOffset; 
    visibleRect.size = scrollView.bounds.size; 
    // iterate through the textFields array to find out which textField is currently visible. 
} 

행운을 빈다.

+0

Perfect Answer 정확한 해결책! –

관련 문제