iOS Scrollview检测滚动

时间:2012-01-16 06:28:03

标签: iphone ios ipad uiscrollview

我已经阅读了有关此确切主题的所有帖子,但我仍无法检测到用户何时在此iPad应用上滚动...

我的.h:

#import <UIKit/UIKit.h>

@interface MyApp_ViewController : UIViewController <UIScrollViewDelegate>
{

}
@property (weak, nonatomic) IBOutlet UIButton *otherButton;
@property (weak, nonatomic) IBOutlet UIScrollView *otherScrollView;
@property (weak, nonatomic) IBOutlet UITextView *txtViewHTML;

-(void)k_RootViewPrint:(NSString *) data;

-(void)ActionEventForButton: (id) sender;

@end

我的.m:

-(void)scrollViewDidScroll:(UIScrollView *)scrollView 
{

    NSLog(@"...");
}

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
    NSLog(@"2222");
}
- (void) touchesEnded: (NSSet *) touches withEvent: (UIEvent *) event 
{
    NSLog(@"touches ended BS");
}

但它们都不起作用?我确信这很简单,但我已经做了我能想到的一切,但仍然没有。任何正确方向的指导都将深表感谢!

4 个答案:

答案 0 :(得分:2)

如果它没有登录scrollViewDidScroll:,则滚动视图的委托不会设置为视图控制器。

您可以在调试器中进行检查。应用程序启动后,暂停调试器并运行以下命令:

po [[(id)UIApp keyWindow] recursiveDescription]

查看输出以查找UIScrollView的地址。会有一行代表<UIScrollView: 0xc894d60 ...>。获取地址(我的示例中为0xc894d60)并在此调试器命令中使用它:

po [0xc894d60 delegate]

如果打印出类似<MyApp_ViewController: 0x6a7f6c0>的内容,则表示您的委托设置正确。如果它打印“无法打印NIL对象的描述。”,则表示您尚未设置滚动视图的委托。如果它打印其他内容,则表示滚动视图的委托不正确。

答案 1 :(得分:1)

您是否已将UIScrollView上的委托设置为ViewController?

答案 2 :(得分:1)

对于可能像我一样迷失的其他人,这是代码中的解决方案:

- (void)viewDidLoad
{
[super viewDidLoad];
self.otherScrollView.delegate = self; // This is the KEY

答案 3 :(得分:0)

检查您是否设置了委托,然后尝试

尝试实施`

- (void) touchesEnded: (NSSet *) touches withEvent: (UIEvent *) event 
{   
    // If not dragging, send event to next responder
    if (!self.dragging) 
        [self.nextResponder touchesEnded: touches withEvent:event]; 
    else
        [super touchesEnded: touches withEvent: event];
}
`