Merge pull request #1071 from NativeScript/textview-delegate

TextView delegate improved
This commit is contained in:
Vladimir Enchev
2015-11-10 14:07:12 +02:00

View File

@ -8,43 +8,53 @@ global.moduleMerge(common, exports);
class UITextViewDelegateImpl extends NSObject implements UITextViewDelegate {
public static ObjCProtocols = [UITextViewDelegate];
static new(): UITextViewDelegateImpl {
return <UITextViewDelegateImpl>super.new();
}
private _owner: WeakRef<TextView>;
private _owner: TextView;
public initWithOwner(owner: TextView): UITextViewDelegateImpl {
this._owner = owner;
return this;
public static initWithOwner(owner: WeakRef<TextView>): UITextViewDelegateImpl {
let impl = <UITextViewDelegateImpl>UITextViewDelegateImpl.new();
impl._owner = owner;
return impl;
}
public textViewShouldBeginEditing(textView: UITextView): boolean {
this._owner._hideHint();
let owner = this._owner.get();
if (owner) {
owner._hideHint();
}
return true;
}
public textViewDidBeginEditing(textView: UITextView) {
this._owner.style._updateTextDecoration();
let owner = this._owner.get();
if (owner) {
owner.style._updateTextDecoration();
}
}
public textViewDidEndEditing(textView: UITextView) {
if (this._owner.updateTextTrigger === enums.UpdateTextTrigger.focusLost) {
this._owner._onPropertyChangedFromNative(textBase.TextBase.textProperty, textView.text);
}
let owner = this._owner.get();
if (owner) {
if (owner.updateTextTrigger === enums.UpdateTextTrigger.focusLost) {
owner._onPropertyChangedFromNative(textBase.TextBase.textProperty, textView.text);
}
this._owner.dismissSoftInput();
this._owner._refreshHintState(this._owner.hint, textView.text);
owner.dismissSoftInput();
owner._refreshHintState(owner.hint, textView.text);
}
}
public textViewDidChange(textView: UITextView) {
var range = textView.selectedRange;
this._owner.style._updateTextDecoration();
textView.selectedRange = range;
let owner = this._owner.get();
if (owner) {
var range = textView.selectedRange;
owner.style._updateTextDecoration();
textView.selectedRange = range;
if (this._owner.updateTextTrigger === enums.UpdateTextTrigger.textChanged) {
this._owner._onPropertyChangedFromNative(textBase.TextBase.textProperty, textView.text);
}
if (owner.updateTextTrigger === enums.UpdateTextTrigger.textChanged) {
owner._onPropertyChangedFromNative(textBase.TextBase.textProperty, textView.text);
}
}
}
}
@ -59,7 +69,7 @@ export class TextView extends common.TextView {
if (!this._ios.font) {
this._ios.font = UIFont.systemFontOfSize(12);
}
this._delegate = UITextViewDelegateImpl.new().initWithOwner(this);
this._delegate = UITextViewDelegateImpl.initWithOwner(new WeakRef(this));
}
public onLoaded() {