3

プログラムで UIScrollView を作成しようとしています。プロパティを設定して合成します。

@property (weak, nonatomic) IBOutlet UIScrollView *topScrollView;
@synthesize topScrollView;

次に、これを行うメソッドがあります。

[topScrollView setFrame:CGRectMake(320, 0, 320, 65)];
[topScrollView setContentSize:CGSizeMake(500, 100)];
[topScrollView setBackgroundColor:[UIColor greenColor]];
[topScrollView setScrollEnabled:YES];
[topScrollView setShowsHorizontalScrollIndicator:YES];
[topScrollView setShowsVerticalScrollIndicator:NO];
[[self view] addSubview:topScrollView]; 

これをviewDidLoadに入れました。これはスクロール ビューを作成しません。スクロールビューが初期化されていないためだと思います。上記の方法で割り当てと初期化を行うことができますが、別の方法で使用したい場合は機能しません。複数のメソッドで使用されるプログラムで追加された UIScrollViewを見ましたが、あまり役に立ちませんでした。おそらく、私が気付いていない簡単な解決策があります。このスクロールビューをプログラムで作成し、別の方法で使用できるようにするにはどうすればよいですか (主にアニメーションを実行するため)。

ありがとう、

イヴァン

4

4 に答える 4

2

I think it is because the scroll view has not been initialized.

Right.

I can do the allocation and initialization in the above method but then when I want to use it in another method it wont work.

It will if you assign your newly minted scroll view to a property or instance variable. That's what they're for.

Oh, one other thing. You'll need to make sure that your scroll view is retained somehow. That means changing your topScrollView property to strong, or adding it to a view (which will then retain it), or both.

于 2013-06-20T21:04:31.567 に答える
0

以下のコードを使用して、 yourView に UIScrollView を追加できます:-

ステップ1:

Delegate "UIScrollViewDelegate" to your ViewController.h

for example:
  @interface yourViewController:UIViewController<UIScrollViewDelegate> 

ステップ2:

//create you UIScrollView
UIScrollView  *MyScrollVw= [[UIScrollView alloc]initWithFrame:CGRectMake(0 ,0 ,320 ,480)]; 
MyScrollVw.delegate= self;
[MyScrollVw setShowsHorizontalScrollIndicator:NO];
[MyScrollVw setShowsVerticalScrollIndicator:YES];
MyScrollVw.scrollEnabled= YES;
MyScrollVw.userInteractionEnabled= YES;
[yourView addSubview:MyScrollVw];
MyScrollVw.contentSize= CGSizeMake(320 ,1500);//(width,height)

ステップ 3:

ViewController.m に scrollView Delegates を実装したい

-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{
   return imgView;
}
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{
   NSLog(@"Did end decelerating");
   //do your code here
}   
-(void)scrollViewDidScroll:(UIScrollView *)scrollView{
   NSLog(@"Did scroll");
   //do your code here
}
-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{
    NSLog(@"Did end dragging");
   //do your code here
}
-(void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView{
    NSLog(@"Did begin decelerating");
   //do your code here
}
-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{
   NSLog(@"Did begin dragging");
   //do your code here
}
于 2016-02-29T04:27:29.180 に答える
0

簡単な方法:手段が必要な場合は複数回作成できます

- (void)scrollView
{

    int x = 0;
    int y = 10;
    for(int i=0; i<5; i++)
    {
        UIScrollView *scrollview=[[UIScrollView alloc]initWithFrame:CGRectMake(x, y, 50, 50)];
        scrollview.showsVerticalScrollIndicator=YES;
        scrollview.scrollEnabled=YES;
        scrollview.userInteractionEnabled=YES;
        scrollview.backgroundColor = [UIColor greenColor];
        [self.view addSubview:scrollview];
        //scrollview.contentSize = CGSizeMake(50,50);
        x=x+55;
    }
}
于 2013-11-14T13:15:34.093 に答える