Как я могу отключить взаимодействие с пользователем для кнопки «Отмена» на контроллере интерфейса watchOS?

В моем приложении Apple Watch один из моих контроллеров интерфейса имеет кнопку «Отмена» в верхнем левом углу. В моем случае после завершения определенного действия я не хочу, чтобы пользователь возвращался к предыдущему экрану, поэтому я хочу отключить взаимодействие с пользователем для этой кнопки «Отмена». Даже если я изменю заголовок на пустую строку, взаимодействие с пользователем все равно останется включенным.


person simbesi.com    schedule 04.06.2015    source источник


Ответы (3)


Мы не можем отключить пользовательскую кнопку возврата / отмены, но можем загрузить контроллер без кнопки отмены.

presentControllerWithName("NewInterfaceController", context: nil)

presentControllerWithName представит контроллер с кнопкой отмены. Если мы используем, как показано ниже, кнопка отмены не появится.

WKInterfaceController.reloadRootControllersWithNames(["NewInterfaceController"], contexts: ["NewInterfaceController"])

reloadRootControllersWithNames, это сделает наш контроллер корневым, поэтому мы не получим кнопку отмены. Вот как я решил свою проблему. Надеюсь, это поможет и вам.

ПРИМЕЧАНИЕ: здесь [] - синтаксис. exp: ["NewInterfaceController"]

person simbesi.com    schedule 29.06.2015
comment
'reloadRootControllers' устарел в watchOS 4.0: используйте reloadRootPageControllersWithNames. Также, похоже, больше не работает, так как я все еще вижу кнопку отмены ... - person Robbie; 17.01.2020

Вы не можете отключить взаимодействие с пользователем для кнопки «Назад».

Но вы можете немного изменить способ представления своих взглядов, чтобы добиться желаемого.

Начните с вашего обычного взгляда. Проверьте, нужно ли вам показывать пользователю логин. Если да, то представьте представление входа в систему Модально. В конце входа в систему вы закрываете модальное представление и возвращаетесь к нормальному виду без ненужной кнопки возврата.

person pteofil    schedule 04.06.2015
comment
тогда, когда отображается экран входа в систему, пользователь может уволить и увидеть мой фактический контроллер, правильно? Думаю, у меня это не работает ..! @pteofil - person simbesi.com; 04.06.2015
comment
Я могу продолжать искать решения, но я думаю, что основная проблема заключается в том, что вход в систему на часах не является частью разработанных пользовательских кейсов для часов. - person pteofil; 04.06.2015
comment
Что вы делаете в приложении для iPhone, так это сообщаете пользователю, что он должен войти в систему, чтобы использовать приложение, и кнопку для входа. Если пользователь нажимает на вход в систему, вы показываете вид входа в систему модально, а затем, когда вы закрываете его, вы обновляете вид новым контентом для вошедших в систему пользователей. - person pteofil; 04.06.2015
comment
в основном я работаю над бизнес-приложением, поэтому также предоставляю логин в Apple Watch, и то, что вы сказали, правильно для приложения iphone. Но в приложении для часов пользователь не должен видеть первый экран входа в систему или экран фактического содержимого. Если найдешь что-нибудь, поделись со мной. @pteofil - person simbesi.com; 04.06.2015

Это ответ simbesi.com в watchOS 7 / Swift 5.

Представляем новый контроллер модально:

presentController(withName: "NewInterfaceController", context: nil)

Представляем новый контроллер путем замены корневого контроллера:

WKInterfaceController.reloadRootControllers(
    withNamesAndContexts: [
        (
            name: "NewInterfaceController",
            context: "NewInterfaceController" as AnyObject
        )
    ]
)
person Tamás Sengel    schedule 21.12.2020