代码之家  ›  专栏  ›  技术社区  ›  Sergey Aldoukhov

当屏幕键盘可见时,如何使后退按钮返回?

  •  3
  • Sergey Aldoukhov  · 技术社区  · 15 年前

    我有一个简单的输入表单,它由一个文本框和一个“确定/取消”按钮组成。为了给用户保存一些点击,我在显示页面时将焦点放在文本框中,这样键盘就会弹出。此时,我希望“上一步”按钮的行为与“取消”相同,如果按下,则向后导航,但实际上,它只会从文本框中移除焦点,而不会触发backkeypress事件。在下一次按下时,它确实向后移动,但这是两次点击而不是一次。

    所以我有两个问题

    1. 即使键盘可见,如何使后退按钮“返回”?
    2. 我是否试图从WP7交互设计的角度做一些不好的事情?
    2 回复  |  直到 15 年前
        1
  •  2
  •   keyboardP    15 年前

    您可以做的是处理文本框的keyup方法。当按下一个键时,检查它是否是硬件后退键。在我的测试中,硬件后退键有一个 PlatformKeyCode 27。我不确定硬件设备之间是否会发生这种变化。但是,如果没有,可以执行以下操作:

        private void TextBox_KeyUp(object sender, System.Windows.Input.KeyEventArgs e)
        {
            if(e.PlatformKeyCode == 27)
            {
               //Navigation code
            }
    
        }
    

    至于这是否是个好主意,我不确定。后退键对于屏幕键盘的主要功能是关闭键盘。这是用户在各种应用程序中通常会体验到的,所以这是他们对您的期望。但是,由于您的SIP是自动显示的,我想您可能会认为它几乎是布局本身的一部分。我看不到里面的任何东西 UI Guidelines 关于它,但你应该读一读,以防我错过什么。

        2
  •  1
  •   Community Mohan Dere    8 年前

    如果可以覆盖 OnBackKeyPressed 方法?

    根据应用程序认证指南,您可以使用back-key进行哪些操作:

    5.2.4使用后退按钮

    为了保持一致的用户体验,后退按钮只能用于在应用程序中向后导航。

    a.从应用程序的第一个屏幕按后退按钮必须退出应用程序。

    b.按“后退”按钮必须将应用程序返回到上一页。

    c.如果当前页面显示上下文菜单或对话框,则按后退按钮必须关闭菜单或对话框并取消到上一页的后退导航。

    d.对于游戏,当在游戏中按下后退按钮时,游戏可以选择显示暂停上下文菜单或对话框,或将用户导航到先前的菜单屏幕。在暂停的上下文菜单或对话框中再次按下后退按钮将关闭菜单或对话框

    这个 SO question 可能也有用……

    我同意keyboardp的观点,即您不应该真正重写SIP如何与硬件后退按钮交互的默认行为,但您可以始终提交并查看会发生什么情况:)

    推荐文章