gpt4 book ai didi

ios - 监听UIPickerView subview 拖动和减速开始/结束

转载 作者:行者123 更新时间:2023-11-29 05:58:35 26 4
gpt4 key购买 nike

我正在尝试在 React Native 中扩展 ios 的当前 Picker 组件:

我想添加监听 startDragging 和 endDragging、startDecelerating 和 endDecelerating 事件的可能性。

我找到了there我们实际上可以通过检查其 subview 拖动和减速标志来了解用户当前是否正在拖动选取器。这很好,但是类似事件/委托(delegate)的模式更适合 React 原生桥接模型。

您能否建议我如何监听选取器 subview 拖动减速值的变化?

--- 编辑 ---

这是我迄今为止尝试过的:

我编辑了选取器管理器文件并添加了以下内容:

// ...

@implementation RCTPickerManager

RCT_EXPORT_MODULE()

- (UIView *)view
{
//return [RCTPicker new];

RCTPicker* picker = [RCTPicker new];

[self setDelegateForScrollViews:picker];

return picker;
}

// ...

RCT_EXPORT_VIEW_PROPERTY(onScrollChange, RCTBubblingEventBlock)

// ...

-(void)setDelegateForScrollViews:(UIView*)view
{
if([view isKindOfClass:[UIScrollView class]]){
UIScrollView* scroll_view = (UIScrollView*) view;
RCTLogInfo(@"DEBUG setting a delegate on SV");
scroll_view.delegate = self;
}
else {
for(UIView *sub_view in [view subviews]){
[self setDelegateForScrollViews:sub_view];
}
}
}

// UIScrollViewDelegate methods

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
RCTLogInfo(@"DEBUG scrollViewWillBeginDragging");
((RCTPicker*)self.view).onScrollChange(@{ @"state": [NSNumber numberWithBool:YES] });
}

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView
willDecelerate:(BOOL)decelerate {
RCTLogInfo(@"DEBUG scrollViewDidEndDragging");
((RCTPicker*)self.view).onScrollChange(@{ @"state": [NSNumber numberWithBool:NO] });
}

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
RCTLogInfo(@"DEBUG scrollViewDidEndDecelerating");
// TODO
}

- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView {
RCTLogInfo(@"DEBUG scrollViewDidEndScrollingAnimation");
}

@end

但是当我滚动选择器时,UIScrollView Delegate 方法永远不会引发:(...

有人有什么想法吗?

最佳答案

尝试子类化选取器 View 并实现 ScrollView 委托(delegate)方法。不要忘记调用super。我不明白你为什么要这样做。这些功能被设计隐藏了。你想通过这个达到什么目的?即使您有正当理由,您也应该重新考虑您想要做什么。如果您确实需要知道用户何时滚动以选择某些内容,请使用 UITableView,您可以获得其 ScrollView 委托(delegate)事件。

关于ios - 监听UIPickerView subview 拖动和减速开始/结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54886921/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com