Я хотел бы использовать событие onScroll для списка в nativescript, но событие не существует.Итак, я перехожу к нативному, поэтому я хотел бы создать делегата для моего списка.Все работает, но я не знаю почему, я должен сделать console.log моим делегатом, чтобы использовать его, иначе он не запускается.У вас есть представление о причине?
export class ItemsComponent implements OnInit, AfterViewInit {
items: Array<Item>;
@ViewChild('header') header: ElementRef;
@ViewChild('listView') listView: ElementRef;
// This pattern makes use of Angular’s dependency injection implementation to
// inject an instance of the ItemService service into this class.
// Angular knows about this service because it is included in your app’s main NgModule,
// defined in app.module.ts.
constructor(private itemService: ItemService, private zone: NgZone) { }
ngOnInit(): void {
this.items = this.itemService.getItems();
}
ngAfterViewInit() {
setTimeout(() => {
if (isIOS) {
let newDelegate = newUITableViewDelegateImpl.initWithOriginalDelegate(this.listView.nativeElement._delegate);
this.listView.nativeElement.ios.delegate = newDelegate;
console.log(this.listView.nativeElement.ios.delegate);
}
}, 50)
}
}
class newUITableViewDelegateImpl extends NSObject implements UITableViewDelegate {
public static ObjCProtocols = [UITableViewDelegate];
private _originalDelegate: UITableViewDelegate;
public static initWithOriginalDelegate(originalDelegate: UITableViewDelegate): newUITableViewDelegateImpl {
console.log("initWithOwner")
let delegate = <newUITableViewDelegateImpl>newUITableViewDelegateImpl.new();
delegate._originalDelegate = originalDelegate;
return delegate;
}
public scrollViewWillBeginDragging(scrollView: UIScrollView) {
console.log("scrollViewWillBeginDragging");
}
public scrollViewDidScroll(scrollView: UIScrollView) {
console.log("scrollViewDidScroll");
}
}