typescript - Jeg implementerte iOS-delegatmetoden, den fungerte i den innledende fasen
Opprinnelig skript versjon 5.1.1
Xcode 10 og nyere, Mojave OS
SearchBar Onloaded-funksjon
//Delegate Method Call
let delegate = MallSearchDelegate.initWithOriginalDelegate((<any>this.searchbar)._delegate);
(<any>this.searchbar)._delegate = delegate;
Delegert klasse
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"
});
}
}
}
Naviger til en annen side og tilbake til siden når brukeren klikker på søkefeltet, krasjer appen.
Årsak: Kom tilbake til delegeringsmetodesiden og klikk på søkefeltet, det returnerer feilen 'eier er udefinert', derfor la jeg til en betinget sjekk for udefinert.