让 "didSelectRowAtIndexPath" 仅在点击单元格内的图像时不调用(但在其他情况下调用)?
Let "didSelectRowAtIndexPath" NOT called only when an image within cell is tapped (but make it called otherwise)?
我想在我的 UITableViewCell
上放一张图片,并在用户点击单元格时将单元格移动到详细视图控制器。但是,当用户点击仅放在单元格部分的图像时,我还想让单元格不移动到细节 VC。单元格如下所示:
[cell.textLabel myImage accessoryType] <- UITableViewCell
但是,当我像下面这样实现我的代码时,用户在点击单元格时必须移动到细节 VC,即使她点击的是图像覆盖的微小部分。是否可以在她点击图片时禁用 didSelectRowAtIndexPath:
?
tableView:didSelectRowAtIndexPath:
var cell = self.tableView.dequeueReusableCellWithIdentifier(CellReuseIdentifier, forIndexPath: indexPath) as! UITableViewCell
var list = listArray[indexPath.row]
cell.textLabel?.text = list.name
cell.accessoryType = UITableViewCellAccessoryType.DetailButton
let image = UIImage(named: "myImage.png")
var imageView = UIImageView(image: image)
imageView.frame = CGRectMake(280, 4, 36, 36)
cell.addSubview(imageView)
return cell
我尝试了 imageView.userInteractionEnabled = false
但结果没有改变。
另请注意,图像不是附件视图,因为我也想使用附件类型(两者都不能使用)所以您不能使用 tableView:accessoryButtonTappedForRowWithIndexPath:
委托方法。
实现此目的的一种方法是使用 UIButton 而不是图像视图,或者用按钮覆盖图像。该按钮无需执行任何操作,但会拦截触摸。
您可以通过三种方法来完成它:
将 UITapGestureRecognizer
添加到您的 UIImageView
。如果您点击 UIImageView
.
,它将强制 UITableView
不要调用 didSelectRowAtIndexPath
如果你正在使用故事板,你可以覆盖override func shouldPerformSegueWithIdentifier(identifier: String!, sender: AnyObject!) -> Bool
并避免它。
或者正如@DuncanLowrie 所说:
use a UIButton instead of an image view, or overlay the the image with a button. The button doesn't have to do anything, but will intercept the touch.
我想在我的 UITableViewCell
上放一张图片,并在用户点击单元格时将单元格移动到详细视图控制器。但是,当用户点击仅放在单元格部分的图像时,我还想让单元格不移动到细节 VC。单元格如下所示:
[cell.textLabel myImage accessoryType] <- UITableViewCell
但是,当我像下面这样实现我的代码时,用户在点击单元格时必须移动到细节 VC,即使她点击的是图像覆盖的微小部分。是否可以在她点击图片时禁用 didSelectRowAtIndexPath:
?
tableView:didSelectRowAtIndexPath:
var cell = self.tableView.dequeueReusableCellWithIdentifier(CellReuseIdentifier, forIndexPath: indexPath) as! UITableViewCell
var list = listArray[indexPath.row]
cell.textLabel?.text = list.name
cell.accessoryType = UITableViewCellAccessoryType.DetailButton
let image = UIImage(named: "myImage.png")
var imageView = UIImageView(image: image)
imageView.frame = CGRectMake(280, 4, 36, 36)
cell.addSubview(imageView)
return cell
我尝试了 imageView.userInteractionEnabled = false
但结果没有改变。
另请注意,图像不是附件视图,因为我也想使用附件类型(两者都不能使用)所以您不能使用 tableView:accessoryButtonTappedForRowWithIndexPath:
委托方法。
实现此目的的一种方法是使用 UIButton 而不是图像视图,或者用按钮覆盖图像。该按钮无需执行任何操作,但会拦截触摸。
您可以通过三种方法来完成它:
将
UITapGestureRecognizer
添加到您的UIImageView
。如果您点击UIImageView
. ,它将强制 如果你正在使用故事板,你可以覆盖
override func shouldPerformSegueWithIdentifier(identifier: String!, sender: AnyObject!) -> Bool
并避免它。或者正如@DuncanLowrie 所说:
use a UIButton instead of an image view, or overlay the the image with a button. The button doesn't have to do anything, but will intercept the touch.
UITableView
不要调用 didSelectRowAtIndexPath