2017-06-21 11 views
0

テーブルビューに検索バーがあります。テキストをコピーしたときに検索バーにテキストを自動検索または自動貼り付けしたい場合テキストを自動貼り付ける方法

私はそれを行うことはできますか?

それは

輸入のUIKit

クラスTableViewControllerソースコードです:、

答えて

2

は確かに私を助けるためのUITableViewController、UISearchBarDelegate {

var listEnWord = [EnWordModel]() 
var filteredWord = [EnWordModel]() 
var inSearchMode = false 
var dbHelper = DatabaseHelper() 

override func viewDidLoad() { 
    super.viewDidLoad() 
    searchaWord() 
    loadAllWords() 

    } 

override func viewWillAppear(_ animated: Bool) { 
    super.viewWillAppear(animated) 
    self.navigationController?.setNavigationBarHidden(false, animated: animated) 
} 

func loadAllWords(){ 
    listEnWord = dbHelper.getAllEnWord() 
    tableView.dataSource = self 
    tableView.delegate = self 
    } 


func searchaWord(){ 
    let searchBar = UISearchBar() 
    self.view.addSubview (searchBar) 
    searchBar.delegate = self 
    searchBar.returnKeyType = UIReturnKeyType.done 
    navigationItem.titleView = searchBar 
} 


func searchBarCancelButtonClicked(_ searchBar: UISearchBar) { 
    self.view.endEditing(true) 
} 

override func numberOfSections(in tableView: UITableView) -> Int { 
    return 1 
} 

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 

    if inSearchMode { 
     return filteredWord.count 
    } 

    return listEnWord.count 
} 


override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCell(withIdentifier: "Cell") as! ItemMenuCell 

    if inSearchMode { 
     cell.enword = filteredWord[indexPath.row] 

    } else { 

     cell.enword = listEnWord[indexPath.row] 

    } 

    return cell 
} 

func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) { 

    if searchBar.text == nil || searchBar.text == "" { 
     inSearchMode = false 
     tableView.reloadData() 
     self.view.endEditing(true) 

    } else { 

     inSearchMode = true 
     let lower = searchBar.text!.lowercased() 
     filteredWord = listEnWord.filter({$0.Word?.range(of: lower, options: .anchored) != nil}) 
     tableView.reloadData() 
     tableView.setContentOffset(CGPoint.zero, animated: true) 
     self.view.endEditing(true) 
    } 
} 

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
    if inSearchMode { 
     Singleton.ShareInstance.enwordSelected = filteredWord[indexPath.row] 
    } else { 
     Singleton.ShareInstance.enwordSelected = listEnWord[indexPath.row] 
    } 

    let des = storyboard?.instantiateViewController(withIdentifier: "DetailController") 
    navigationController?.pushViewController(des!, animated: true) 
} 

}

おかげで、あなたのように思えます自動検索の方法を探していますあなたのクリップボードのテキスト。したがって、最初にクリップボードのテキストをこのように変更します。それだけで、あなたのアプリケーション内で動作することに注意してください:

NotificationCenter.default.addObserver(self, selector: #selector(clipboardChanged), 
             name: NSNotification.Name.UIPasteboardChanged , object: nil) 

はその後、この機能によってそれを扱う

func clipboardChanged(){ 
    let pasteboardString: String? = UIPasteboard.general.string 
    if let theString = pasteboardString { 
     print("String is \(theString)") 
     // Put the string into your search bar and do the search 
    } 
} 
関連する問題