Собственная версия скрипта 5.1.1
Xcode 10 и выше, Mojave OS
Функция загрузки 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"
});
}
}
}
Перейдите на другую страницу и вернитесь на страницу, когда пользователь нажимает на строку поиска, в приложении произошел сбой.
Причина вернуться на страницу метода делегата и щелкнуть панель поиска возвращает владельца ошибки не определено, поэтому я добавил условную проверку для неопределенного.