UIButton выделен, но не выполняет свое действие - PullRequest
0 голосов
/ 11 ноября 2019

У меня есть tableView с разными строками. Большинство из них заполнены клетками, которая содержит TextFields, последний из которых является клетка, которая содержит UIStackView, в котором отображаются два UIButtons. В принципе, моя цель состоит в том, чтобы иметь Tableview, что работает, как формы, каждый из которых строк будут принимать некоторую информацию и, наконец, когда пользователь нажимает одну из двух кнопок в нижней части всей информация сохраняется (другая кнопка должна отменить операцию и получитьвернуться к предыдущему виду). Теперь все текстовые поля работают хорошо, и в «холостом» состоянии, кнопки работают слишком хорошо, и делать то, что им нужно сделать

1002 * Проблема заключается в следующем:. В то время как в режиме одного из TextField редактированияЕсли я нажимаю одну из кнопок внизу, они выделяются (что-то происходит), но они НЕ выполняют своих действий. Далее происходит то, что клавиатура отклоняется (textField перестает быть первым респондентом), и все возвращаются в «состояние ожидания». В этот момент кнопки возвращаются в рабочее состояние (поэтому при повторном нажатии они выполняют свои действия и т. Д.). 1004 * Я хотел бы, чтобы они работали, даже если фокус находится на режиме редактирования других клеток, и я не хочу, чтобы пользователь был вынужден щелкать два раза на ту же кнопку. Что я могу сделать?

Я перепробовал все возможные свойства как tableView, UIButtons и даже StackView (таким образом, «isInteractionEnabled», «AllowsMultipleSelectionWhileEditing», «delaysContentTouches» и т. Д., «BringSubviewToFront» ..)Понятия не имею, почему кнопка подсвечивается, но не работает.

1008 * Существует также tapGestureRecognizer в смеси, но это, кажется, не увлекаться (напечатать что-то каждый раз, когда вызывается, а это не так). 1010 *Вот мой код

В INIT: миниатюрный элемент питания.

modButton.addTarget(self, action: #selector(modClicked()), for: .touchUpInside)
saveButton.addTarget(self, action: #selector(saveClicked()), for: .touchUpInside)
//some other properties of the buttons

buttonStack.alignment = .center
buttonStack.axis = .horizontal
buttonStack.distribution = .equalSpacing
buttonStack.translatesAutoresizingMaskIntoConstraints = false

buttonStack.addArrangedSubview(modButton)
buttonStack.addArrangedSubview(saveButton)

addSubview(buttonStack)
//some constraints

В методе viewDidLoad: 1022

let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(screenTouched))
tap.cancelsTouchesInView = false
view.addGestureRecognizer(tap)

//some properties i've tried

tableView.delegate = self
tableView.dataSource = self
tableView.separatorColor = .clear
tableView.isScrollEnabled = false
tableView.delaysContentTouches = false
tableView.allowsSelection = true
tableView.allowsSelectionDuringEditing = true
tableView.allowsMultipleSelectionDuringEditing = true

В методе tableView cellForRow:

// at the right indexPath:

let cell = tableView.dequeueReusableCell(withIdentifier: "buttoncell", for: indexPath) as! ButtonCell

//some properties i've tried

cell.buttonStack.bringSubviewToTop
cell.buttonStack.isUserInteractionEnabled = true
cell.buttonStack.allowsMultipleInteraction = true

cell.modButton.isUserInteractionEnabled = true

//etc..

return cell
...