iOS Scrollview 检测滚动

Posted

技术标签:

【中文标题】iOS Scrollview 检测滚动【英文标题】:iOS Scrollview detect Scrolling 【发布时间】:2012-01-16 06:28:03 【问题描述】:

我已经阅读了之前关于这个确切主题的所有帖子,但我仍然无法检测到用户何时在这个 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");

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

【问题讨论】:

您必须将 otherScrollView 的委托设置为您的文件所有者 【参考方案1】:

如果它没有登录scrollViewDidScroll:,那么滚动视图的委托没有设置到视图控制器。

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

po [[(id)UIApp keyWindow] recursiveDescription]

查看输出以找到您的 UIScrollView 的地址。会有一行写着&lt;UIScrollView: 0xc894d60 ...&gt;。获取地址(在我的示例中为0xc894d60)并在此调试器命令中使用它:

po [0xc894d60 delegate]

如果它打印出类似&lt;MyApp_ViewController: 0x6a7f6c0&gt; 的内容,则您的委托设置正确。如果它打印“无法打印 NIL 对象的描述。”,您还没有设置滚动视图的委托。如果它打印了其他内容,则说明您错误地设置了滚动视图的委托。

【讨论】:

这是代码中的解决方案(对于其他可能像我一样迷路的人): - (void)viewDidLoad [super viewDidLoad]; self.otherScrollView.delegate = self; // 这是关键【参考方案2】:

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

【讨论】:

好的,所需要的只是设置委托。谢谢你。我知道这很简单【参考方案3】:

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

- (void)viewDidLoad

[super viewDidLoad];
self.otherScrollView.delegate = self; // This is the KEY

【讨论】:

【参考方案4】:

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

尝试实现`

- (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];

`

【讨论】:

以上是关于iOS Scrollview 检测滚动的主要内容,如果未能解决你的问题,请参考以下文章

ScrollView 在 IOS7 上不滚动

iOS之UIPickerView滚动事件

小程序scroll-view垂直滚动下设置高度问题

RN - iOS - ScrollView联动滚动卡顿问题处理记录

RN - iOS - ScrollView联动滚动卡顿问题处理记录

带有 UIControl/UIButton 子视图的 ScrollView/TableView 在 iOS 8 下不可滚动