2016-11-07 2 views
2

Я хочу, чтобы создать пользовательский Tokenizer для @ как в функции WhatsApp, когда вы открываете группу и типа @ то есть всплывающий список отображения друзей, и вы выбираете один из списка.Реализовать в прошивке - Android MultiAutoCompleteTextView с пользовательским Tokenizer как в Whatsapp [изображение прилагается]

Я хочу, чтобы показать что-то вроде этого:

enter image description here

+0

этот вопрос был задан для "андроид" здесь http://stackoverflow.com/questions/40460997/android-multiautocompletetextview-with-custom-tokenizer-like-as-whatsapp-groupch – johnrao07

+0

use textField delegate method 'shouldChangeCharactersInRange' и' tableView', обнаруживать каждый символ, когда @ появляется, показывает «tableView» со списком. – vaibhav

ответ

3

Некоторые демо-код тренировки я делал ранее.

Demo Slide Up Like @

Github post

Надеется, что это поможет.

import UIKit 

class ViewController: UIViewController { 

    @IBOutlet var txtSearch : UITextField! 
    @IBOutlet var tblUserData : UITableView! 
    var myArrayOfDict: NSMutableArray = [] 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     myArrayOfDict = [["UserName": "Hasya", "UserID": "1", "UserImage": "1.png"],["UserName": "Demo", "UserID": "2", "UserImage": "2.png"],["UserName": "Hasya & Hasya", "UserID": "3", "UserImage": "3.png"],["UserName": "Demo User", "UserID": "4", "UserImage": "4.png"]] 

     tblUserData.layer.borderColor = UIColor.blueColor().CGColor 
     tblUserData.layer.borderWidth = 1.0 
    } 

    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
    { 
     return myArrayOfDict.count 
    } 

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 
    { 

     let cell : CustomCell! = tableView.dequeueReusableCellWithIdentifier("CustomCell", forIndexPath: indexPath) as! CustomCell 

     cell.imgUser.layer.cornerRadius = cell.imgUser.frame.size.height/2 

     let strImageName : String = (myArrayOfDict.objectAtIndex(indexPath.row).valueForKey("UserImage") as? String)! 

     cell.imgUser.image = UIImage(named: (strImageName)) 

     cell.lblName.text = myArrayOfDict.objectAtIndex(indexPath.row).valueForKey("UserName") as? String 


     return cell 
    } 


    func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) 
    { 


     let str : String = (myArrayOfDict.objectAtIndex(indexPath.row).valueForKey("UserName") as? String)! 

     txtSearch.text = txtSearch.text! + str 
     // String(format:"@", myArrayOfDict.objectAtIndex(indexPath.row).valueForKey("UserName") as? String) 

     UIView.animateWithDuration(0.5) {() -> Void in 

      var frameOftblUserData : CGRect = self.tblUserData.frame 
      frameOftblUserData.origin.y = 264 
      frameOftblUserData.size.height = 0 
      self.tblUserData.frame = frameOftblUserData 

     } 


    } 

    func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool { 

     print(string) 

     if string.hasPrefix("@") 
     { 
      print("YES") 

      UIView.animateWithDuration(0.5) {() -> Void in 

       var frameOftblUserData : CGRect = self.tblUserData.frame 
       frameOftblUserData.origin.y = 132 
       frameOftblUserData.size.height = 132 
       self.tblUserData.frame = frameOftblUserData 

      } 

     } 
     else 
     { 
      print("NO") 

      UIView.animateWithDuration(0.5) {() -> Void in 

       var frameOftblUserData : CGRect = self.tblUserData.frame 
       frameOftblUserData.origin.y = 264 
       frameOftblUserData.size.height = 0 
       self.tblUserData.frame = frameOftblUserData 

      } 

     } 

     return true; 
    } 


    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 


} 

enter image description here

+1

точно, что мне предложили, используя комментарий, +1 bro. – vaibhav

+0

спасибо за ответ, есть одна проблема, когда позиция курсора достигает #tagvalue, мы должны удалить целое значение #tagvalue вместо каждой буквы. Есть ли способ об этом? – johnrao07

Смежные вопросы