2016-12-09 2 views
2

Большая часть примера, который я нашел, находится в Objective - C, что очень сложно для меня понять, может кто-нибудь представить пример по этому вопросу в Swift. Here - это одно решение, но оно находится в Objective C.UISearchBar обнаруживает, когда пользователь останавливает тип в swift

+0

Спросите более ясно, так что кто-то может понять !! вы можете поделиться ссылкой ссылки на цель c, о которой вы упомянули! – Lion

+0

Хорошо, я отредактирую свой вопрос. – user2273146

+0

Вы пробовали поискBarTextDidEndEditing и searchBarShouldEndEditing ?? –

ответ

1

Вы должны проверить его с помощью UISearchBarDelegate:

func searchBarTextDidEndEditing(searchBar: UISearchBar) { 
    //DO what you want 
} 

Не забудьте добавить:

searchBar.delegate = self 

и его относительный протокол:

UISearchBarDelegate 

https://developer.apple.com/reference/uikit/uisearchbardelegate

Этот делегат: searchBarTextDidEndEditing вызывается, когда клавиатура исчезает, так что добавьте этот код в ваш Proj:

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { 
    self.view.endEditing(true) 
} 
+0

func searchBarTextDidEndEditing (searchBar: UISearchBar) { print ("Type End"); } Первоначально я сделал то же самое, но после того, как тип заканчивается, значение не печатается на консоли, поэтому я предполагаю, что это не работает. – user2273146

+2

Вы должны добавить: searchBar.delegate = self –

+0

override func viewDidLoad() { super.viewDidLoad() // Выполняйте любую дополнительную настройку после загрузки представления, как правило, из ниба. делегатов /* Настройки */ tableView.delegate = само tableView.dataSource = само searchBar.delegate = само } Да у меня есть упоминание, что уже. – user2273146

0

Swift версия вашей ссылки:

var searchDelayer: Timer! 

func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) { 
    searchDelayer.invalidate(), searchDelayer = nil 
    if true { 
     searchDelayer = Timer.scheduledTimer(timeInterval: 1.5, target: self, selector: #selector(self.doDelayedSearch), userInfo: searchText, repeats: false) 
    } 
} 

func doDelayedSearch(_ t: Timer) { 
    assert(t == searchDelayer) 
    self.request(searchDelayer.userInfo!) 
    searchDelayer = nil 
} 




var priorSearchText = "" 

    func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) { 
     NSObject.cancelPreviousPerformRequests(withTarget: self, selector: #selector(self.request), object: priorSearchText) 
     priorSearchText = searchText 
    } 
    if true { 
     self.performSelector(#selector(self.request), withObject: searchText, afterDelay: 1.5) 
    } 
3
func searchBar(searchBar: UISearchBar, textDidChange searchText: String) { 
    print("after every text gets changed") 
    timer.invalidate() 
    timer = NSTimer.scheduledTimerWithTimeInterval(5, target: self, selector: #selector(ViewController.output), userInfo: searchText, repeats: false) 
} 

func output(){ 
    print("hello") 
    if timer.userInfo != nil { 
     print(timer.userInfo) 
    } 
    timer.invalidate() 
} 
+0

Вот как я решил свою проблему ... Спасибо всем за ваше любезное предложение :) – user2273146