在UITextField中更改文本时,Web服务调用不会取消

时间:2017-07-24 16:50:36

标签: ios swift3 uitextfield alamofire

当我输入UITextField时,我正在搜索服务中的文字。我正在使用Alamofire库来进行服务调用。这就是我调用我的Web服务调用函数的方式。

func search(){

    self.strSkipCount="0"
    com.showProgress()
    self.searchDirectory() { (status) in

        print("-----SEARCHING-----")
        self.com.removeProgress()
        if(status){
            self.facesCarousel.reloadData()
            self.setNumberofFaces(count: self.arrayDirectory.count)
        } else {
            self.com.showProgress()
            self.getStaffData() { (status) in
                self.com.removeProgress()
                if(status){
                    self.facesCarousel.reloadData()
                    self.setNumberofFaces(count: self.arrayDirectory.count)
                    self.resetMembercountLabel()
                } else {
                    self.setNumberofFaces(count: self.arrayDirectory.count)
                }
            }
        }
    }
}

在我的ViewDidLoad()中,我已经以这种方式将目标设置为我的文本字段。

txtSearch.addTarget(self, action: #selector(self.searchTextFieldEditingChanged), for: .editingChanged)

然后

func searchTextFieldEditingChanged() {
    if(txtSearch.text != ""){
        self.searchText=txtSearch.text
        //self.cancelPreviousRequest()
       NSObject.cancelPreviousPerformRequests(withTarget: self, selector: #selector(search), object: nil)
        self.search()
    } else {
        self.searchText=""
         NSObject.cancelPreviousPerformRequests(withTarget: self, selector: #selector(searchDirectory(callback:)), object: nil)
        isSearching=false
        prevIndex=0
        self.arrayDirectory=self.arrayPreviouslyLoadedArray
        facesCarousel.reloadData()
        self.resetMembercountLabel()
        self.com.removeProgress()
    }
}

我的问题是,让我说我想要搜索名称" Alex",即使在发现了我以前的服务电话似乎没有停止。它重新加载错误的结果。但有时它有效。当删除文本字段中的所有文本时,如果文本是""在文本字段中。我想用最初加载的数据集重新加载。但是设置为""后,服务电话不会立即停止。请帮帮我。

0 个答案:

没有答案