我实现了在初始阶段就可以运行的iOS委托方法

Raj*_*Raj 5 runtime ios typescript nativescript-angular

本机脚本版本5.1.1

Xcode 10及更高版本,Mojave OS

SearchBar加载的功能

//Delegate Method Call
let delegate = MallSearchDelegate.initWithOriginalDelegate((<any>this.searchbar)._delegate);
(<any>this.searchbar)._delegate = delegate;
Run Code Online (Sandbox Code Playgroud)

代表班

export class MallSearchDelegate extends NSObject{
public static ObjCProtocols = [UISearchBarDelegate];
private _originalDelegate:UISearchBarDelegate;

public static initWithOriginalDelegate(originalDelegate: UISearchBarDelegate):MallSearchDelegate{
    let delegate = <MallSearchDelegate>MallSearchDelegate.new();
    delegate._originalDelegate = originalDelegate;
    console.log("Initialized SearchBar");
    return delegate;
}

public searchBarTextDidEndEditing(searchBar: UISearchBar):void{ 
    console.log("endSearch");
    if(((<any>this._originalDelegate)._owner)!=undefined){
        const owner = (<WeakRef<SearchBar>>(<any>this._originalDelegate)._owner).get();
        if (owner) {
            owner.notify({
                object: owner,
                eventName: "endSearch",
                focusable:false
            });
        }
    } 
}

public searchBarTextDidBeginEditing(searchBar: UISearchBar):void{ 
    console.log("beginSearch");
    if(((<any>this._originalDelegate)._owner)!=undefined){
        const owner = (<WeakRef<SearchBar>>(<any>this._originalDelegate)._owner).get();
        if (owner) {
            owner.notify({
                object: owner,
                eventName: "beginSearch",
                focusable:true
            });
        }
    }
}

public searchBarSearchButtonClicked(searchBar: UISearchBar) {
    console.log("onSubmit");
    searchBar.resignFirstResponder();
    if(((<any>this._originalDelegate)._owner)!=undefined){
    const owner = (<WeakRef<SearchBar>>(<any>this._originalDelegate)._owner).get();
        if (owner) {
            owner.notify({ 
                object: owner,
                eventName: "submit"
            });
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当用户单击应用程序崩溃的搜索栏时,导航到另一个页面,然后返回该页面。

原因回到委托方法页面,然后单击搜索栏,返回错误所有者未定义,这就是为什么我添加条件检查未定义的原因。