在 iOS 中实现 - 带有自定义标记器的 Android MultiAutoCompleteTextView,如 Whatsapp [附加图片]

Posted

技术标签:

【中文标题】在 iOS 中实现 - 带有自定义标记器的 Android MultiAutoCompleteTextView,如 Whatsapp [附加图片]【英文标题】:Implement in iOS - Android MultiAutoCompleteTextView with custom tokenizer as in Whatsapp [image attached] 【发布时间】:2016-11-07 12:52:15 【问题描述】:

当您打开群组并输入 @ 时,我想为 @ 创建自定义标记器,就像在 WhatsApp 功能中一样,然后会弹出一个显示朋友列表的窗口,您可以从中选择一个列表。

我想展示这样的东西:

【问题讨论】:

这个问题已经被问到这里的“android”***.com/questions/40460997/… 使用textField委托方法shouldChangeCharactersInRangetableView,检测@出现时的每个字符显示tableView和列表。 【参考方案1】:

我之前做过的一些演示代码练习。

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.
    



【讨论】:

正是我使用评论建议的内容,+1 兄弟。 感谢回答,有一个问题,当光标位置到达#tagvalue时,我们应该删除整个#tagvalue值而不是每个字母。有办法解决吗?

以上是关于在 iOS 中实现 - 带有自定义标记器的 Android MultiAutoCompleteTextView,如 Whatsapp [附加图片]的主要内容,如果未能解决你的问题,请参考以下文章

java.lang.IllegalStateException:在 JSF 中实现自定义标记处理程序时出现 java.lang.InstantiationException

如何在iOS中实现,将JSValue 转为自定义类型

无法在 Antlr4 中实现带有自定义分隔符的 q 引用字符串

如何在IOS7中实现UIViewControllers之间的前后转换导航?

如何在自定义相机中实现“捏放大”

在spring boot中实现自定义错误