[英]iOS 9: Gesture Recognizer was setup in a storyboard/xib to be added to more than one view (not working)
使用iOS 9並面臨UITapGestureRecognizer
的問題。 我有一個帶有UITableView
的ViewController-A。 我添加了一個tableViewCell,它有一個textLabel。 我想在textLabel上實現點擊。 因此,如果我點擊textLabel - 它應該在控制台上打印或執行其他任何操作
問題: TapRecogniser無效。 得到以下錯誤:
以下是我所做的:
1)在textLabel(From StoryBoard)上添加了一個“UITapGestureRecognizer”。 為textLabel啟用了用戶交互(即使是現在的錯誤)
2)以下是IBAction:
@IBAction func nameTap(sender: UITapGestureRecognizer) {
print("a")
}
3)CellForRowAtIndexPath
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("cell") as! ThirdViewCell!
cell.nameLabel?.text = "XYZ"
let nameTapRecognizer = UITapGestureRecognizer(target: self, action: Selector("nameTap:"))
nameTapRecognizer.cancelsTouchesInView = false
cell.nameLabel?.addGestureRecognizer(nameTapRecognizer)
return cell
}
PS: 1)這在iOS 8中工作。我檢查過..沒有重復項(整個文件中只有一個點擊識別器,並且它鏈接到textLabel)
2)我不想使用didSelectRowAtIndexPath方法,因為我需要為tableViewCell中的更多textLabel實現TapGestureRecognizer。
你看到錯誤控制台Label
,並且屬性為UserInteractionEnabled = NO;
看屏幕截圖
試試這個
let nameTapRecognizer = UITapGestureRecognizer(target: self, action: Selector("nameTap:"))
nameTapRecognizer.cancelsTouchesInView = false
cell.nameLabel?.tag = indexPath.row // add this
nameTapRecognizer.numberOfTapsRequired = 1 // add this
nameTapRecognizer.delegate =self
cell.nameLabel?.userInteractionEnabled = true // add this
cell.nameLabel?.addGestureRecognizer(nameTapRecognizer)
// method
func nameTap(gesture: UITapGestureRecognizer) {
let indexPath = NSIndexPath(forRow: gesture.view!.tag, inSection: 0)
let cell = tableView.cellForRowAtIndexPath(indexPath) as UITableViewCell
// Do whatever you want.
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.