2016-09-29 5 views
0

У меня есть 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) 
    } 
} 

Вот результат:

enter image description here

Так что мой вопрос: является существует способ отключить взаимодействие пользователя в крайнем правом углу UITableViewCell?

ответ

0

Вы должны добавить кнопку в качестве подсмотра содержимого контента вашей ячейки. поэтому вы можете установить желаемый кадр для своей кнопки, а ваш cell не будет показывать дополнительное пространство.

Итак, добавьте кнопку subview из contentview.

Во-вторых, если вы хотите установить кнопку в качестве дополнительного вида, добавьте еще blank label или blank view с правой стороны, чтобы он не получил click!

Выше решение будет лучше для вас, а не для управления сложными вещами типа - отключите userinteraction для определенной области и т. Д.!

+0

Спасибо, но я попытался добавить кнопку в качестве подсмотра содержимого моей ячейки, и между кнопкой и ячейкой существуют огромные конфликты (почти невозможно дотронуться до кнопки, даже если реализован метод gestureRecognizer: shouldRequireFailureOf: ', ячейка выбранных при нажатии на кнопку). У меня нет второго решения: если я поставлю пустой вид с правой стороны, нажав на это представление, выберете ячейку, правильно? – Randy

Смежные вопросы