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 的地址。会有一行写着<UIScrollView: 0xc894d60 ...>
。获取地址(在我的示例中为0xc894d60
)并在此调试器命令中使用它:
po [0xc894d60 delegate]
如果它打印出类似<MyApp_ViewController: 0x6a7f6c0>
的内容,则您的委托设置正确。如果它打印“无法打印 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 检测滚动的主要内容,如果未能解决你的问题,请参考以下文章
RN - iOS - ScrollView联动滚动卡顿问题处理记录
RN - iOS - ScrollView联动滚动卡顿问题处理记录
带有 UIControl/UIButton 子视图的 ScrollView/TableView 在 iOS 8 下不可滚动