首页 > 解决方案 > 我实现了它在初始阶段工作的 iOS 委托方法

问题描述

本机脚本版本 5.1.1

Xcode 10 及更高版本,Mojave 操作系统

SearchBar 加载函数

//Delegate Method Call
let delegate = MallSearchDelegate.initWithOriginalDelegate((<any>this.searchbar)._delegate);
(<any>this.searchbar)._delegate = delegate;

代表班

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"
            });
        }
    }
}

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

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

标签: iostypescriptruntimenativescript-angular

解决方案


推荐阅读