长按后调用didSelectRowAtIndexPath [英] didSelectRowAtIndexPath called after long press

查看:130
本文介绍了长按后调用didSelectRowAtIndexPath的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在 uitextfield 下面有一个 uitableview ,它在 uitableview中填充类似的字符串细胞
项目已填充。但是长按<$ p>

$ b

我的 UITableView didSelectRowAtIndexPath >(嵌入在UIScrollView中)
- didSelectRowAtIndexPath:仅在长按自定义单元格后才被调用



我的视图层次结构:




  • UIScrollView(outerscroll)


    • 一些其他视图和按钮

    • UITexfield

    • UITableView(tableView)




我的代码

 类MyViewController:BaseViewController,UITextFieldDelegate,UITableViewDelegate ,UITableViewDataSource,UIGestureRecognizerDelegate {



@IBOutlet weak var autocompleteTableView:UITableView!
var pastUrls = [Men,Women,Cats,Dogs,Children,aaaaaaaa,aaaaaaaaaaaaaaaaaa,aaaaaaaaa,a,aa,aaa ]
var autocompleteUrls = [String]()

@IBOutlet weak var image_view_seacrh_ifsc:UIImageView!


@IBOutlet weak var scrollView:UIScrollView!


覆盖func viewDidLoad(){
super.viewDidLoad()

//加载视图后进行任何其他设置。
self.scrollView.panGestureRecognizer.delaysTouchesBegan = true

autocompleteTableView.delegate = self
autocompleteTableView.dataSource = self
autocompleteTableView.scrollEnabled = true
autocompleteTableView。 alwaysBounceVertical =假
autocompleteTableView.allowsSelection = TRUE
autocompleteTableView.allowsSelectionDuringEditing = TRUE

autocompleteTableView.hidden = TRUE




super.hideKeyboard()
super.showNavigationBarBackButton()

let gesture_search_ifsc = UITapGestureRecognizer(target:self,action:action_Search_Ifsc:)
gesture_search_ifsc.delegate = self
gesture_search_ifsc.numberOfTapsRequired = 1

image_view_seacrh_ifsc.userInteractionEnabled = true
image_view_seacrh_ifsc.addGestureRecognizer(gesture_search_ifsc)


}




func searchAutocompleteEntriesWithSubstring(s ubstring:String)
{
autocompleteUrls.removeAll(keepCapacity:false)

for pastUrls中的curString
{
var myString:NSString! = curString as NSString

var substringRange:NSRange! = myString.rangeOfString(substring)

if(substringRange.location == 0)
{
autocompleteUrls.append(curString)
}
}

autocompleteTableView.reloadData()
//autocompleteTableView.hidden = false
}

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

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


让cell:AutoBankCell = tableView.dequeueReusableCellWithIdentifier(AutoBankCell)为! AutoBankCell

cell.label.text = self.autocompleteUrls [indexPath.row]
//cell.lbl.text = self.autocompleteUrls [indexPath.row]

返回细胞


}

FUNC的tableView(的tableView:UITableView的,didSelectRowAtIndexPath方法indexPath:NSIndexPath){
让selectedCell:的UITableViewCell = tableView.cellForRowAtIndexPath( indexPath)!
self.bank_name.text = self.autocompleteUrls [indexPath.row]

self.autocompleteTableView.scrollEnabled = true
self.autocompleteTableView.hidden = true
}


}

我的 UItableView 填充并在未嵌入 UIScrollView 时正常工作。

解决方案

尝试在滚动视图中添加 uiview 并添加 uiview 喜欢 tableView,textfield,views和buttons 等。



所以,该视图用作容器视图。



如果您使用 autolayout ,请确保设置正确的约束。



第二件事是删除不必要的手势识别器隐式这不是必需的。



Tableview有滚动默认情况下启用,因此无需再次将其设置为true。 (这不会影响你的问题顺便说一句!!)



因此,删除不必要的配置并进行正确的设置,我认为你的问题将得到解决。


I have a uitableview right below a uitextfield that populates similar strings in a uitableview cell. The items get populated. However the didSelectRowAtIndexPath gets called after long press

My UITableView (is embedded in UIScrollView) - didSelectRowAtIndexPath: only being called after long press on custom cell

My view hierarchy:

  • UIScrollView (outerscroll)
    • Some other views and buttons
    • UITexfield
    • UITableView (tableView)

My Code

class MyViewController:  BaseViewController , UITextFieldDelegate , UITableViewDelegate , UITableViewDataSource , UIGestureRecognizerDelegate  {



@IBOutlet weak var autocompleteTableView: UITableView!
var pastUrls = ["Men", "Women", "Cats", "Dogs", "Children","aaaaaaaaa","aaaaaaaaaaaaaaaaaaa","aaaaaaaaa","a","aa","aaa"]
var autocompleteUrls = [String]()

@IBOutlet weak var image_view_seacrh_ifsc: UIImageView!


@IBOutlet weak var scrollView: UIScrollView!


override func viewDidLoad() {
    super.viewDidLoad()

    // Do any additional setup after loading the view.
    self.scrollView.panGestureRecognizer.delaysTouchesBegan = true

    autocompleteTableView.delegate = self
    autocompleteTableView.dataSource = self
    autocompleteTableView.scrollEnabled = true
    autocompleteTableView.alwaysBounceVertical = false
    autocompleteTableView.allowsSelection = true
    autocompleteTableView.allowsSelectionDuringEditing = true

    autocompleteTableView.hidden = true




    super.hideKeyboard()
    super.showNavigationBarBackButton()

    let gesture_search_ifsc = UITapGestureRecognizer(target: self, action: "action_Search_Ifsc:")
    gesture_search_ifsc.delegate = self
    gesture_search_ifsc.numberOfTapsRequired = 1

    image_view_seacrh_ifsc.userInteractionEnabled = true
    image_view_seacrh_ifsc.addGestureRecognizer(gesture_search_ifsc)


}




func searchAutocompleteEntriesWithSubstring(substring: String)
{
    autocompleteUrls.removeAll(keepCapacity: false)

    for curString in pastUrls
    {
        var myString:NSString! = curString as NSString

        var substringRange :NSRange! = myString.rangeOfString(substring)

        if (substringRange.location  == 0)
        {
            autocompleteUrls.append(curString)
        }
    }

    autocompleteTableView.reloadData()
    //autocompleteTableView.hidden = false
}

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

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


    let cell: AutoBankCell = tableView.dequeueReusableCellWithIdentifier("AutoBankCell") as! AutoBankCell

    cell.label.text = self.autocompleteUrls[indexPath.row]
    //cell.lbl.text = self.autocompleteUrls[indexPath.row]

    return cell


}

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    let selectedCell : UITableViewCell = tableView.cellForRowAtIndexPath(indexPath)!
    self.bank_name.text = self.autocompleteUrls[indexPath.row]

    self.autocompleteTableView.scrollEnabled = true
    self.autocompleteTableView.hidden = true
}


}

My UItableView gets populated and works properly when not embedded in UIScrollView.

解决方案

Try to add uiview in your scroll view and add every elements in that uiview like your tableView,textfield,views and buttons etc.

So, that view works as container view.

Make sure that you are setting proper constraints if you are using autolayout.

Second thing remove unnecessary gesture recognizer implicitly which is not required.

Tableview have scroll enable by default so not need to set it true again. (it's not affect your issue btw!!)

So remove unnecessary configuration and make proper setup and your issue will be solved i think.

这篇关于长按后调用didSelectRowAtIndexPath的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆