Отключить UIContextualAction - PullRequest
       26

Отключить UIContextualAction

0 голосов
/ 22 февраля 2019

Я пытаюсь отключить UIContextualAction, который у меня есть:

let picture = UIContextualAction(style: .normal, title:  " ? ", handler: { (ac: UIContextualAction, view: UIView, success:(Bool) -> Void) in
    // ...
})
picture.backgroundColor = .blue

Я не могу найти что-нибудь в Интернете, чтобы включить или отключить это, я все еще хочу, чтобы это присутствовало, просто не хочу, чтобы пользовательнажмите на него.Возможно ли это?

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019

Я все еще хочу, чтобы он присутствовал, просто не хочу, чтобы пользователь нажимал на него

Вы не можете запретить пользователю постукивать в контекстнойЗначок действия, если он присутствует (что бы вы сделали, протянуть руку и схватить руку пользователя?).Однако тот факт, что пользователь нажимает на контекстное действие, не означает, что вы должны делать что-либо в ответ.

Объект контекстного действия имеет обработчик завершения;если вы не хотите ничего делать в ответ на нажатие, ничего не делайте в этом обработчике завершения.

let picture = UIContextualAction(style: .normal, title:  " ? ", handler: { (ac: UIContextualAction, view: UIView, success:(Bool) -> Void) in
    // do nothing
})

Однако я не могу рекомендовать такой подход;это крайне плохой интерфейс.Если пользователь может видеть что-либо, он ожидает, что он сможет нажать на него и дать ответ.Кнопка, которая ничего не делает, будет чувствовать себя «сломанной».Было бы лучше сделать то, что вы сказали, что не хотите делать, то есть в условиях, когда пользователь не может выполнять это действие, не показывайте его в первую очередь.

0 голосов
/ 22 февраля 2019

Я не уверен, что его можно отключить «из коробки», но в качестве обходного пути вы можете использовать глобальную переменную, отслеживающую, нужно ли включить действие, а затем проверить это в обработчике действия:

var isCamActionEnabled = false // declare globally, if you need to set this from outside the current scope
let picture = UIContextualAction(style: .normal, title:  " ? ", handler: { (ac: UIContextualAction, view: UIView, success:(Bool) -> Void) in
    guard isCamActionEnabled else { return }
    // ...
})
...