У меня есть UITableView
с UITableViewCell
s, чьи accessoryView
являются UIButton
s. Когда пользователь нажимает этот UIButton
, действие запускается. Он работает очень хорошо, но есть одно неудобное: accessoryView
не прилипает к правому краю ячейки, поэтому, когда пользователь нажимает крайний правый элемент ячейки, кнопка не запускается, и это еще хуже: ячейка выбрана, вызывая нежелательное действие.Как отключить взаимодействие пользователя с определенным местоположением UITableViewCell?
Вот как я определяю свои клетки:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "CellIdentifier")
let accessoryButton = MyCustomAccessoryView(frame: CGRect(x: 0.0, y: 0.0, width: 45.0, height: 45.0))
accessoryButton.addTarget(self, action: #selector(MyController.accessoryButtonTapped(_:)), for: .touchUpInside)
cell?.accessoryView = accessoryButton
return cell
}
MyCustomAccessoryView.swift:
class MyCustomAccessoryView: UIButton {
override init(frame: CGRect) {
super.init(frame: frame)
self.backgroundColor = UIColor.red
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
}
Вот результат:
Так что мой вопрос: является существует способ отключить взаимодействие пользователя в крайнем правом углу UITableViewCell
?
Спасибо, но я попытался добавить кнопку в качестве подсмотра содержимого моей ячейки, и между кнопкой и ячейкой существуют огромные конфликты (почти невозможно дотронуться до кнопки, даже если реализован метод gestureRecognizer: shouldRequireFailureOf: ', ячейка выбранных при нажатии на кнопку). У меня нет второго решения: если я поставлю пустой вид с правой стороны, нажав на это представление, выберете ячейку, правильно? – Randy