长按后调用 didSelectRowAtIndexPath
didSelectRowAtIndexPath called after long press
我在 uitextfield
的正下方有一个 uitableview
,它在 uitableview cell
中填充相似的字符串。
这些项目得到填充。然而 didSelectRowAtIndexPath
在长按后被调用
我的UITableView
(嵌入在UIScrollView中)
- didSelectRowAtIndexPath:
仅在长按自定义单元格后被调用
我的视图层次结构:
- UIScrollView(外滚动)
- 其他一些视图和按钮
- UITexfield
- UITableView(表格视图)
我的代码
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
}
}
我的 UItableView
在未嵌入 UIScrollView
时得到填充并正常工作。
尝试在您的 scroll view
中添加 uiview
并在 uiview
中添加每个元素,例如您的 tableView,textfield,views and buttons
等
因此,该视图用作容器视图。
如果您使用 autolayout
,请确保设置了正确的约束。
第二件事删除不需要的手势识别器implicitly
。
Tableview 默认启用滚动功能,因此无需再次将其设置为 true。 (顺便说一句,这不会影响您的问题!!)
因此,删除不必要的配置并进行适当的设置,我认为您的问题将得到解决。
我在 uitextfield
的正下方有一个 uitableview
,它在 uitableview cell
中填充相似的字符串。
这些项目得到填充。然而 didSelectRowAtIndexPath
在长按后被调用
我的UITableView
(嵌入在UIScrollView中)
- didSelectRowAtIndexPath:
仅在长按自定义单元格后被调用
我的视图层次结构:
- UIScrollView(外滚动)
- 其他一些视图和按钮
- UITexfield
- UITableView(表格视图)
我的代码
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
}
}
我的 UItableView
在未嵌入 UIScrollView
时得到填充并正常工作。
尝试在您的 scroll view
中添加 uiview
并在 uiview
中添加每个元素,例如您的 tableView,textfield,views and buttons
等
因此,该视图用作容器视图。
如果您使用 autolayout
,请确保设置了正确的约束。
第二件事删除不需要的手势识别器implicitly
。
Tableview 默认启用滚动功能,因此无需再次将其设置为 true。 (顺便说一句,这不会影响您的问题!!)
因此,删除不必要的配置并进行适当的设置,我认为您的问题将得到解决。