highlight on press

This commit is contained in:
Michael Kirk 2018-07-12 11:52:50 -06:00
parent 2606ac47f8
commit 41af4f8c9d
1 changed files with 14 additions and 9 deletions

View File

@ -348,7 +348,7 @@ protocol MessageActionViewDelegate: class {
func actionView(_ actionView: MessageActionView, didSelectAction action: MessageAction)
}
class MessageActionView: UIView {
class MessageActionView: UIButton {
public weak var delegate: MessageActionViewDelegate?
private let action: MessageAction
@ -363,20 +363,24 @@ class MessageActionView: UIView {
let imageView = UIImageView(image: action.image)
let imageWidth: CGFloat = 24
imageView.autoSetDimensions(to: CGSize(width: imageWidth, height: imageWidth))
imageView.isUserInteractionEnabled = false
let titleLabel = UILabel()
titleLabel.font = UIFont.ows_dynamicTypeBody
titleLabel.textColor = UIColor.ows_light90
titleLabel.text = action.title
titleLabel.isUserInteractionEnabled = false
let subtitleLabel = UILabel()
subtitleLabel.font = UIFont.ows_dynamicTypeSubheadline
subtitleLabel.textColor = UIColor.ows_light60
subtitleLabel.text = action.subtitle
subtitleLabel.isUserInteractionEnabled = false
let textColumn = UIStackView(arrangedSubviews: [titleLabel, subtitleLabel])
textColumn.axis = .vertical
textColumn.alignment = .leading
textColumn.isUserInteractionEnabled = false
let contentRow = UIStackView(arrangedSubviews: [imageView, textColumn])
contentRow.axis = .horizontal
@ -384,22 +388,23 @@ class MessageActionView: UIView {
contentRow.spacing = 12
contentRow.isLayoutMarginsRelativeArrangement = true
contentRow.layoutMargins = UIEdgeInsets(top: 7, left: 16, bottom: 7, right: 16)
contentRow.isUserInteractionEnabled = false
self.addSubview(contentRow)
contentRow.autoPinToSuperviewMargins()
contentRow.autoSetDimension(.height, toSize: 56, relation: .greaterThanOrEqual)
// TODO better mimic button
// - style with touch down
// - slide from one to the next
// - accessability hints
// - UIControl?
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(didPress))
self.addGestureRecognizer(tapGesture)
self.addTarget(self, action: #selector(didPress(sender:)), for: .touchUpInside)
}
override var isHighlighted: Bool {
didSet {
self.backgroundColor = isHighlighted ? UIColor.ows_light10 : UIColor.white
}
}
@objc
func didPress(event: Any) {
func didPress(sender: Any) {
Logger.debug("\(logTag) in \(#function)")
self.delegate?.actionView(self, didSelectAction: action)
}