无障碍角色 accessibilityRole (iOS, Android)
无障碍角色 accessibilityRole (iOS, Android)
-
none 无特性元素。
-
button 具有按钮特性。
-
link 具有链接特性。
-
search 用作搜索框的文本框。
-
image 具有图片特性。可以和按钮或链接等连用。
-
keyboardkey 元素作为虚拟键盘的一个键使用。
-
text 具有不可修改的文本的特性。
-
adjustable 元素具有可调整的特性(比如一个滑块)。
-
imagebutton
-
header 作为内容区域的头部(比如导航栏的标题)。
-
summary 在 App 冷启动(指完全退出后台后再进入)时提供当前的简要总结信息的元素。比如当天气应用冷启动时,显示当前天气情况的元素就会被标记为summary。
-
alert
-
checkbox
-
combobox
-
menu
-
menubar
-
menuitem
-
progressbar
-
radio
-
radiogroup
-
scrollbar
-
spinbutton
-
switch
-
tab
-
tablist
-
timer
-
toolbar
改进用户体验
- 配置文本输入
由于触屏手机的小屏幕和软键盘,使得在手机中输入文本成为一件具有挑战的事情。 但是你可以基于你需要的数据配置文本输入让这个过程变得简单。
自动对焦( focus )第一个文本域 使用placeholder 作为预想的输入格式 启用 或者 禁用 自动大写、自动校正 选择键盘类型 【例如 email, 数字(numeric)】 确保回车按钮对焦到下一个域或者提交表单
- 键盘隐藏时的布局管理
软键盘几乎占用将近一半的手机屏幕。 如果你有会被软键盘覆盖的交互式组件,请使用[KeyboardAvoidingView 组件]以确保他们可以在打开键盘时可以被访问。
- 放大可触控区域
在手机上精准的点击一个按钮是很困难的一件事。 确保所有交互式元素大于等于44x44。 常见的撑大尺寸的做法有:使用 padding, minWidth 和 minHeight 样式。 或者, 可以使用 hitSlop 属性 无需影响布局来增加可交互区域
- 屏幕的旋转锁定
一般情况下 多屏幕(指的是横向和纵向) 会正常显示,除非你使用Dimensions API 并且 不处理 方向改变事件 (orientation changes)。 如果你不想做多屏幕方向支持,你可以锁定屏幕方向为 横向 或者纵向。
对于安卓, 打开 AndroidManifest.xml 文件 并且在 Activity 元素中添加 'android:screenOrientation="portrait"' 以锁定屏幕为纵向, 或者使用'android:screenOrientation="landscape"'锁定屏幕为横向。
- 定时器
setTimeout, clearTimeout setInterval, clearInterval setImmediate, clearImmediate requestAnimationFrame, cancelAnimationFrame requestAnimationFrame(fn)和setTimeout(fn, 0)不同,前者会在每帧刷新之后执行一次,而后者则会尽可能快的执行(在 iPhone5S 上有可能每秒 1000 次以上)。
setImmediate则会在当前 JavaScript 执行块结束的时候执行,就在将要发送批量响应数据到原生之前。注意如果你在setImmediate的回调函数中又执行了setImmediate,它会紧接着立刻执行,而不会在调用之前等待原生代码。
Promise的实现就使用了setImmediate来执行异步调用。
InteractionManager 原生应用感觉如此流畅的一个重要原因就是在互动和动画的过程中避免繁重的操作。在 React Native 里,我们目前受到限制,因为我们只有一个 JavaScript 执行线程。不过你可以用InteractionManager来确保在执行繁重工作之前所有的交互和动画都已经处理完毕。
应用可以通过以下代码来安排一个任务,使其在交互结束之后执行:
InteractionManager.runAfterInteractions(() => {
// ...需要长时间同步执行的任务...
});