5

scrollViewDidScrollサブクラスのメソッドを呼び出してUIScrollViewも何も起こらないという問題があります。これが私のコードです:

AppDelegate.m

#import "ScrollView.h"

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    CGRect screenRect = [[self window] bounds];

    ScrollView *scrollView = [[ScrollView alloc] initWithFrame:screenRect];
    [[self window] addSubview:scrollView];
    [scrollView setContentSize:screenRect.size];

    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];
    return YES;
}

ScrollView.m

#import "AppDelegate.h"
#import "ScrollView.h"

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code
        NSString *imageString = [NSString stringWithFormat:@"image"];
        UIImage *image = [UIImage imageNamed:imageString];
        UIImageView *imageView = [[UIImageView alloc] initWithImage:image];

        [super addSubview:imageView];
    }
    return self;
}

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    NSLog(@"%f", scrollView.contentOffset.y);
}
4

3 に答える 3

5

- (id)initWithFrame:(CGRect)frame

追加

self.delegate = self;

またはAppDelegate.mで、scrollviewを開始した後、このコードを追加します

scrollview.delegate = self;

もちろん、デリゲートメソッドを実装する必要があります

scrollViewDidScroll:

AppDelegate.hに以下のコードを追加することを忘れないでください

@interface AppDelegate : UIResponder <UIApplicationDelegate,UIScrollViewDelegate>
于 2013-01-14T01:56:00.370 に答える
5

iOS10の場合、SWift3.0はUIScrollViewにscrollViewDidScrollを実装します

class ViewController: UIViewController, UIScrollViewDelegate{

//In viewDidLoad Set delegate method to self.

@IBOutlet var mainScrollView: UIScrollView!

override func viewDidLoad() {
    super.viewDidLoad()

    self.mainScrollView.delegate = self

}
//And finally you implement the methods you want your class to get.
func scrollViewDidScroll(_ scrollView: UIScrollView!) {
    // This will be called every time the user scrolls the scroll view with their finger
    // so each time this is called, contentOffset should be different.

    print(self.mainScrollView.contentOffset.y)

    //Additional workaround here.
}
}
于 2015-11-20T12:31:59.363 に答える
4

ステップ1:UIViewControllerクラスのデリゲートを作成します。

  @interface ViewController : UIViewController <UIScrollViewDelegate>

UIScrollViewステップ2:次に、オブジェクトのデリゲートを追加します。

  scrollview.delegate = self;

ステップ3:次のようにデリゲートメソッドを実装します。

 - (void)scrollViewDidScroll:(UIScrollView *)scrollView {
     // Do your stuff here...
     // You can also track the direction of UIScrollView here....
     // to check the y position use scrollView.contentOffset.y
 }

どうぞ。ScrollViewDidScroll上記の3つのステップを使用して、メソッドをObjective-Cクラス に統合できます。

于 2015-12-11T08:40:50.980 に答える