UIScrollViewDelegateImpl improved

This commit is contained in:
Vladimir Enchev
2015-11-10 10:35:16 +02:00
parent 77852c9672
commit cea78d679f

View File

@ -7,29 +7,31 @@ import utils = require("utils/utils");
global.moduleMerge(common, exports); global.moduleMerge(common, exports);
class UIScrollViewDelegateImpl extends NSObject implements UIScrollViewDelegate { class UIScrollViewDelegateImpl extends NSObject implements UIScrollViewDelegate {
public static ObjCProtocols = [UIScrollViewDelegate]; private _owner: WeakRef<ScrollView>;
static new(): UIScrollViewDelegateImpl { public static initWithOwner(owner: WeakRef<ScrollView>): UIScrollViewDelegateImpl {
return <UIScrollViewDelegateImpl>super.new(); let impl = <UIScrollViewDelegateImpl>UIScrollViewDelegateImpl.new();
impl._owner = owner;
return impl;
} }
private _owner: ScrollView; public scrollViewDidScroll(sv: UIScrollView): void {
let owner = this._owner.get();
public initWithOwner(owner: ScrollView): UIScrollViewDelegateImpl { if (!owner) {
this._owner = owner; return;
return this;
} }
public scrollViewDidScroll(textView: UIScrollView): void { if (owner) {
if (this._owner) { owner.notify(<definition.ScrollEventData>{
this._owner.notify(<definition.ScrollEventData>{ object: owner,
object: this._owner,
eventName: definition.ScrollView.scrollEvent, eventName: definition.ScrollView.scrollEvent,
scrollX: this._owner.horizontalOffset, scrollX: owner.horizontalOffset,
scrollY: this._owner.verticalOffset scrollY: owner.verticalOffset
}); });
} }
} }
public static ObjCProtocols = [UIScrollViewDelegate];
} }
export class ScrollView extends common.ScrollView implements definition.ScrollView { export class ScrollView extends common.ScrollView implements definition.ScrollView {
@ -44,7 +46,7 @@ export class ScrollView extends common.ScrollView implements definition.ScrollVi
} }
protected attachNative() { protected attachNative() {
this._delegate = UIScrollViewDelegateImpl.new().initWithOwner(this); this._delegate = UIScrollViewDelegateImpl.initWithOwner(new WeakRef(this));
this._scroll.delegate = this._delegate; this._scroll.delegate = this._delegate;
} }