Swift over Coffee - 第四季第7集:进步胜于完美 封面

第四季第7集:进步胜于完美

S4E7: Progress over perfection

本集简介

为庆祝全球无障碍意识日,Mikaela和Paul在芬兰奥卢的ARCtic会议现场录制了一期特别节目,特邀无障碍领域的杰出倡导者Rob Whitaker、Daniel Devesa Derksen-Staats和Klemens Strasse参与讨论。若无障碍议题令你感到无从下手,请别担心;我们不仅会阐明其重要性,更将提供实用技巧助你迈出第一步,确保应用尽可能实现无障碍——谨记这句箴言:“进步胜于完美”! 节目相关重要链接: 全球无障碍意识日:https://accessibility.day ARCtic会议:https://arcticonference.com Klemens Strasser作品《动物艺术》:https://apps.apple.com/gb/app/art-of-fauna-cozy-puzzles/id1630468596 Linda Dong演讲《包容性设计实践》:https://developer.apple.com/videos/play/wwdc2021/10275/ Klemklem Strasser作品《动物艺术》:https://apps.apple.com/gb/app/art-of-fauna-cozy-puzzles/id1630468596 色觉模拟工具Sim Daltonism:https://apps.apple.com/gb/app/sim-daltonism/id1050503579 "世界最大鸳鸯粉丝"作品《动物艺术》:https://apps.apple.com/gb/app/art-of-fauna-cozy-puzzles/id1630468596 近期会议: SwiftCraft(5月19-21日):https://swiftcraft.uk 会议主办方:我们期待定期在此推荐更多活动。当早鸟票开售、演讲嘉宾公布或有其他动态时,请联系我们,我们将尽力予以展示!

双语字幕

仅展示文本字幕,不包含中文音频;想边听边看,请使用 Bayt 播客 App。

Speaker 0

欢迎收听《Swift Over Coffee》第四季第七集。这一次的节目有些特别。

Welcome to season four episode seven of Swift Over Coffee. And it's a slightly different episode this time.

Speaker 1

播客很棒。

Podcasting's great.

Speaker 0

Mikaela 和我是在2025年3月于芬兰举行的 Arkly 大会上现场面对面录制的这期节目。所以声音是通过扬声器播放出来的吗?还是没声音?我可以提前试一下,如果可以的话。不过我得说,音频质量不能算是录音棚级别的。我们已经尽力进行了清理处理,让它听起来更清晰,并且去掉了某些特别明显的、令人尴尬的口误。

Mikaela and I record this episode live in person at Arkly conference in Finland back in March 2025. So will the sound come through speaker or no sound? I can try prematurely if I can do it. Now, I should say, the audio isn't what you'd call studio quality. And we've done our best to clean things up, make it easy to listen to, and removing, well, some of the most egregious and embarrassing stumbles.

Speaker 0

不,不,我们基本上能搞定。听着,如果一切出错,你们至少能听到现场的声音,对吧?

No. No. We'll figure it out, basically. Look, if it all goes wrong, you will hear live. Right?

Speaker 0

是的,是的,我知道。对吧?你们可以看到我们现场出错的样子。

Yeah. Yeah. I know. Right? You can see us screw up live.

Speaker 0

虽然有些音频可能比我们通常追求的质量稍微粗糙一些,但这次会议本身非常棒。我们来问问在场的观众,他们觉得2025年北极会议怎么样?来吧。是的,太棒了,对吧?

But while some of the audio might be a little rougher than we're usually aiming for, the conference itself was well, let's ask the audience who are in the room what they thought of Arctic Conference twenty twenty five. Go. Yeah. It was incredible. Right?

Speaker 0

真的非常棒。

It was really, really good.

Speaker 2

作为第一届会议来说太棒了。

It was amazing for a first edition For

Speaker 0

不管哪一届,咖啡都非常好。但作为第一届来说,确实令人印象深刻。而且,今天我们还邀请到了一些朋友。请他们自我介绍一下吧。请开始。

any edition coffee, was very, very good. But the fact that it was a first version, yes, very impressive. And yes, we do have some friends today. I'll let them introduce themselves. Go ahead.

Speaker 1

大家好,我叫 Rob Whitaker,我是一名 iOS 工程师,也是一名无障碍专家,最近在苹果公司负责 iOS 和 macOS 的无障碍功能。

Hi, everyone. My name is Rob Whitaker. I am an iOS engineer and an accessibility specialist, most recently working on iOS and macOS accessibility at Apple.

Speaker 3

是的。我是Dani Deves Adelks,这是Thad。我现在正在实现梦想,因为我是一名专注于可访问性的iOS工程师。是的,我喜欢像Rob一样在会议上分享这些内容,举办研讨会,并在社交媒体和博客文章中撰写相关内容。

Yeah. I'm Dani Deves Adelks and Thad. I'm living the dream because also I'm working as an iOS engineer specializing in accessibility. Yeah. I love, like Rob, talking about it in conferences, running workshops, and writing about it in social media and blog posts.

Speaker 4

我是Clemence Strasse。我来自格拉茨,是一名独立开发者,专门开发非常具有可访问性的应用程序。基本上就是这样。

I'm Clemence Strasse. I'm from Graz, and I'm a indie developer who makes apps that are very accessible. That's basically it.

Speaker 0

整个旅程中,他一直在严重地让我怀疑自己。因为用德语发音,他的名字读作Cleomans。Cleomans。他说,不,不是Cleomans。

So this entire trip, he's been massively gaslighting me. Because in his in German, his name's pronounced Cleomans. Cleomans. He goes, no. It's not Cleomans.

Speaker 0

就是Cleomans。我分不清区别。Cleomans。Cleomans。真该死。

It's Cleomans. And I can't tell the difference. Cleomans. Cleomans. Damn it.

Speaker 0

我希望我们的播客编辑能让我的发音听起来像是正确念出了你的名字。无论如何,我们之所以把这三位聚在一起,是因为他们在确保应用程序的可访问性方面确实是顶尖专家,看到这样的成果真的很棒。所以能让他们同时出现在一个地方是非常难得的。我想我们非常幸运。是的。

I'm hoping our podcast editor can sort of make me sound like I pronounced your name correctly. Anyway, the reason we have these three folks together is because they are genuinely the best of the best when it comes to getting things like accessibility correct in your apps, which is amazing to see. And so having them all together in one place at the same time, it's very unusual. We're very lucky, I think. Yeah.

Speaker 0

是的。

Yeah.

Speaker 2

当然。

Definitely.

Speaker 0

我们认为应该向他们请教一些非常棒的建议,让在座的各位以及之后收听播客的人能够提升自己应用程序的可访问性。我们先从最简单的开始吧。好,对于一个完全不了解旁白(VoiceOver)、切换控制(Switch Control)或其他辅助功能的人来说,我们应该从哪里入手呢?Rob?

We thought we'd grill them all some fantastic tips for ways that folks here live, but also listen to the podcast later on, can make their apps better for accessibility. Let's go real easy. Okay? For someone who's like, I know nothing about VoiceOver, Switch Control, or whatever, how can we get started, Rob?

Speaker 1

最好的做法可能是先思考一下你的应用程序,然后设想如果有人无法通过触控、视觉或听觉来体验你的应用,他们该如何完成应用中的所有操作?所以,你可以浏览一下你的应用程序,思考一下对于这类用户来说有哪些可用的选项。系统会为人们提供帮助。正如你所说,有一些我们称之为辅助技术的工具,比如旁白和切换控制,它们可以让有不同障碍的人以不同的方式使用你的应用程序。没错。

The best thing to do is probably to have a think about your app and think if someone who can't experience your app with, touch or sight or, without hearing, how are they going to be able to perform all of the actions within your app? So have a look through your app and think about what what are the options, for someone like that. The the system will help people. There are what we would call assistive technologies, tools like voice over and switch control, as you say, that allow people with various different disabilities to use your application in different ways. Right.

Speaker 1

但系统作为开发者也需要你的一些帮助才能实现这一点。因此,最好的做法是先考虑一下你的应用程序将如何运行。接下来,你可以查看iOS中的设置。里面有一个可访问性设置部分,包含大量不同的可访问性选项。你可以浏览一下,看看有哪些选项。

But the system, will need some of your help as a developer to get that right. So the best thing to do is to kind of have a think about how your app's gonna work. And then the next thing after that would be to have a look through the the settings in in iOS. There's an accessibility set section, a whole section of loads of different accessibility settings in there. And just have a look around, see what the options are.

Speaker 1

也许可以尝试打开一些功能。从 VoiceOver 开始是个不错的选择。是的,VoiceOver 有一个教程,一定要先试试那个。

Maybe try toggling some on. VoiceOver is a great place to start. Yes. There is a tutorial of VoiceOver. Definitely try that first.

Speaker 1

在苹果的支持网站上,有一个很棒的视频。我想,当你刚开始使用 VoiceOver 时,最重要的是知道如何打开它,以及如何关闭它。

And on the Apple support website, there's a great video. The most important thing, I think, with VoiceOver when you're starting is know how to turn it on and know how to turn it off.

Speaker 0

是的。

Yes.

Speaker 1

很多人在打开 VoiceOver 后会卡住,不知道怎么关掉它。是的,它确实会完全改变你使用手机的方式。是的。所以最简单的方法可能是直接让你手机里的语音助手打开 VoiceOver 或关闭 VoiceOver。

A lot of people get stuck when they're they turned it on and can't figure out how to turn it off. Yes. It does change how your phone works at all. Yes. So the easiest way is probably you can ask the person inside your phone to please turn on voice over and please turn off voice over.

Speaker 0

对,我们这里不具体说名字了,但你知道,比如 hey siri,对吧?只要说关掉就可以了。是的。

Yeah. We're not saying it here for reasons, but, you know, hey, s I r I. Right? Just turn it off would do the trick. Yes.

Speaker 0

对,对。所以你觉得,如果掌握了 VoiceOver,是不是就已经完成了很大一部分工作?还是说还有更多要做?比如还有很多工作要做?

Yeah. Yeah. And so you think if you get voice over correct, you're kind of like a fair chunk of the way through it, or is there more work to do, like much more work to do after that?

Speaker 1

当然还有其他你可以做的事情。iOS 中还有一些其他辅助技术会使用 VoiceOver 不涉及的功能。不过 VoiceOver 已经能带你完成大部分工作了。所以刚开始的时候,毫无疑问,所有辅助技术中,应该从 VoiceOver 开始入手。

There is still other things that you can do. The the other assistive technologies will use features in iOS that VoiceOver doesn't, but VoiceOver will get you most of the way. So when you're starting out, VoiceOver is definitely, out of all the assistive technologies, that's the one to start with.

Speaker 2

我很喜欢这个建议。所以刚开始的时候,其实就是四处看看,弄清楚该做什么,然后开始实际操作。Danny,你在如何开始接触无障碍方面有一个非常好的座右铭,能告诉我们那是什么吗?

I love that. So getting started, it's really just look around, figure out what to do, and then start actually working on it. It was Danny, you had a really good motto for how how to get started with accessibility. Can you tell us what is that amazing motto?

Speaker 3

是的。在无障碍领域,我们常说一句话:进步胜过完美。我们都知道刚开始可能会感到不知所措,要学的东西很多,但追求完美是每个人的敌人。我认为根本不存在我们常说的‘100% 无障碍的应用’这种东西。

Yeah. In the accessibility community, a lot of times you said that progress over perfection. We all know that it can be overwhelming at the beginning. It's lots to learn, but perfection is everyone's enemy. I think it's it's there's no such thing as we've said a few times, a 100% accessible app.

Speaker 3

所以我认为重要的是开始去做,去学习,不断进步。我相信,随着时间的推移,一点一滴的改进会带来巨大的变化。很快你就会发现,情况已经比以前好太多了。我记得 Paul 曾经写过一篇博客文章,讲的是你之前学到的一个新的无障碍 API。是的。

So I think what matters is to to start and and to learn and to get better. And I think that small improvement over time really compound. And and and in a short time, you see that Europe is in a much, much better place than than it was. I think Paul wrote a blog post about a new accessibility API that you learned some time ago. Yeah.

Speaker 3

你说过类似这样的话,你有一个使命,要把事情做得更好。没错,我觉得这就是应该有的态度。我还想到另一个常见的例子,比如,你可能对自己的应用还没有太多思考,但你准备开始开发一个新功能,那么就从现在开始做起。因为很多时候人们会说,如果整个应用的其他部分都没有支持旁白或动态字体,那这个新功能为什么要支持呢?

And you said something like, you are on a mission to do better. And exactly. Like, that's that's the right attitude to have, I think. I think another example as well that I found a lot of times is even if your app you haven't given it a lot of thought, but you're going to start developing a new feature, for example, just start with that. Because a lot of times people say, what's the point of supporting voice over or dynamic type in this new feature if the rest of the app doesn't?

Speaker 3

这个时候你就得想,总得从某个地方开始吧。否则的话,下一个团队或新人接手后也会这么说,结果就永远什么都做不了。反过来也是一样,如果你从这里开始,后续参与这个功能开发的人也会受到影响。

And it's like, well, you have to start somewhere. And Yeah. Otherwise, like, the next team or person that comes along and starts something new will say the same, and then you never do anything really. And it's the opposite as well if you start there. Like, people working on the features that lead to your feature.

Speaker 3

也许,他们可能会感到压力,觉得现在必须完全支持动态字体之类的。所以,我觉得追求渐进改进胜过完美主义,也就是 Proteus 胜过完美。

Maybe, like, maybe feel feeling the pressure of now having to support dynamic type whatsoever. So, yeah, Proteus Proteus over perfection, I think.

Speaker 0

实际上,有一位非常棒的 Swift 作者,也是为 Vector C 写文章的人,名叫 Graham Lee。他写过一本关于测试的非常好的书。他说过,如果你目前一个单元测试都没有,那么写一个单元测试就是无限大的改进,对吧?

There's a wonderful Swift writer, actually, vector c writer for it. A fellow by called Swift writer, Graham Lee. He did a really good book on testing. And he said, if you have zero unit tests, going to one unit test is an infinite improvement. Right?

Speaker 0

从数学上来说,这确实是无限的改进。所以,没错,你总得从某个地方开始。追求进步而不是完美,就是这样。我觉得他说得非常到位。我只是稍微猜测一下而已。

Literally, mathematically infinite improvement. And so, yeah, you've gotta start somewhere. And the idea of progress over perfection, boom. I think that completely nails it. I think I'm just guessing a little bit.

Speaker 0

我想人们担心的是,他们必须回去向老板解释。嗯嗯,我们必须加上语音支持,这又得花五天时间,老板可能会说,这不会给我们带来任何收益。你认为该怎么反驳呢?

I think what worries folks is they have to then go and justify to their boss. Mhmm. Oh, we have to add the speech and all sets back, you know, five days of work, and and the boss will say, well, it won't make us any money. How do you push back about that, do think?

Speaker 3

是的,这个问题确实有点棘手。我觉得这其实是一个常识性的问题。有很多人是有残疾的,一些统计数据表明,这个比例可能高达百分之二十甚至更多。

Yeah. It's it's a tricky one. And so I I think it's it's kind of common sense. Like, there's a lot of people living with disabilities. Some stats point that twenty percent of people or more.

Speaker 3

所以,你希望尽可能多的人使用你的应用,这是很自然的事情。我真的想不出任何理由不去做这件事。不过很多时候,人们会觉得这可能需要很多时间。我曾在某个地方读到过一句非常好的说法,可惜不记得是谁说的了,但这句话是:无障碍功能并不是额外的工作。

So it's common sense that you want to get as much people as possible to to use your app. So I really don't see a reason why you wouldn't do it. But a lot of times, it's also considered that it might be a lot of time. I think that's a really good phrase I read somewhere. I would like to remember who said it, but accessibility is not extra work.

Speaker 3

它只是你在开发应用过程中遗漏的一些步骤而已。

It's missed steps along the way of developing your app.

Speaker 0

是的。有一位开发者,他以前在星巴克的应用团队,现在在苹果公司工作,名叫 Hang Trong。他在跟老板谈无障碍功能时说过:我们可能会因此赚到更多钱,但这其实关乎我们的公司文化,以及我们作为一个公司所重视的价值观。如果我们重视照顾每一个人,让每个人都感到被欢迎,那么这项工作就是我们理所当然应该做的,对吧?

Yeah. As a developer, he used to be on, I think it was Starbucks app, who now is at Apple, called Hang Trong, who said that when he talks to his bosses about accessibility, he says, listen, we might make more money, but it's about our company culture and what do we value as a company. Do we value looking after everyone and making everyone feel welcome? If we do, this work should be old for us for us to do. Right?

Speaker 3

没错。

Exactly.

Speaker 0

我想,一旦你说服了你的老板,他们就会想,好吧,我们能开始做这项工作吗?你觉得这很难吗?好吧。你愿意坐在那里做这件事吗?Clem,Clem。

I guess then, once you convince your boss, they're thinking, okay, can we're gonna go ahead and do this work. Is it is it do you think it's hard? Okay. So would you wanna sit there doing it? Clem, clem.

Speaker 0

不。

No.

Speaker 4

实际上,这并没有那么难。如果你从一开始就把它整合进去,肯定会容易得多。所以我认为Danny的观点是,如果你有一个新功能,并且你开始开发这个新功能,那么从一开始就考虑无障碍体验是非常有意义的,因为这样做起来会容易得多。但总体来说,这并不太难。通过进行一次旁白审计,你可以发现很多小问题,这些问题都很容易修复,而修复之后就能显著改善使用旁白功能用户的整体体验。

Actually, it's not that hard. It's definitely much easier if you incorporate it from the get go. So I think at Danny's point of if you have a new feature and you start developing this new feature, totally makes sense to think about accessibility from the get go because it's much easier to do it like that. But overall, it's not super hard. You can by doing a voice over audit, you can find many, many smaller problems that you can fix quite easily and then already improve the overall experience for people who are using voice over quite dramatically.

Speaker 0

是的。嗯,想想看,特别是,这可不是我们安排的广告位,朋友们。在Clem Clem的新应用《The Art of Fauna》中,第一个出现的内容就是:嘿,这些是能让你生活更轻松的选项。它不会把这些功能藏在某个子页面里等你碰运气去找,而是立刻就问你:你需要这个吗?

Yeah. Well, think particularly, and this isn't this is our sponsored advert slot, folks. In the in Clem Clem's new app, The Art of Fauna, there's the first thing it says is, hey, here are my options to make your life easier. It doesn't wait to hide it away in some sub screen somewhere you might find if you're lucky. Straight away, do you want this?

Speaker 0

你需要这个吗?你需要这个吗?它直接切入重点,对吧?

Do you need this? Do you need this? You're getting right to the point with it. Right?

Speaker 4

是的。而且在应用中这样做也非常棒,因为很多人联系过我,说他们根本不知道这些功能的存在,更不知道自己可以从中受益。他们其实非常喜欢其中的一些功能,但可能永远都不会去设置里、无障碍设置中主动寻找这些功能。而在引导流程中直接展示这些功能,是一个非常好的做法,让它们更容易被发现。而且用户也不必被迫经历一个没有这些无障碍功能就根本无法完成的引导流程。

Yeah. And this is also a very good thing in the app because many people reached out to me that they wouldn't have even known that these features exist and that they could benefit of those features, and they really enjoyed some of those features a lot and probably would never gotten to the settings and the accessibility settings to find them. But showing them straightforward in the onboarding already very good thing to make it discoverable. And also they don't have to be forced through an onboarding where they might not be able to even experience the onboarding without those accessibility features.

Speaker 3

对,没错。

Right. Yeah.

Speaker 0

是的,而且那也是一个很棒的应用,对吧?是啊。感觉特别低调。

Yeah. And it's a great app too. Right? Yeah. Feels so humble.

Speaker 0

这是一款了不起的应用,朋友们。快去下载《Fauna的艺术》。这很有趣。去年我也有一点小小的顿悟,因为我一直尽我所能让我的应用具备无障碍功能,并向其他人传授优秀的技巧。然后我去年在Apple Park遇到了他们团队的一些成员。

It's an amazing app, folks. Go and download the art of Fauna. It's interesting. So Danny mentioned I had a minor revelation myself last year because I I do the very best I can to make my app accessible and and teach great techniques to other people. And then I met some of the team at Apple Park.

Speaker 0

我当时就像,嘿,保罗。你能稍微跟我说一下吗?因为你的工作中有一些问题。他们表达得很客气,语气非常温和。但结果是我完全忽略了语音控制 API。

I'm like, hey, Paul. Could you have a little word for you about something? Because there's an issue with some of your work. And they were very nice about it, very gentle about it. But it turns out I'd been completely missing the voice control API.

Speaker 0

所以对于使用语音控制的人来说,他们想控制整个操作,就是比如点这个按钮、点那个按钮、向右滑动之类的。有时候,你可以想象一个股票交易应用,比如它可能有这样的功能:买 100 股 APPL,然后是当前的美元价格。而价格是不断变化的。触发那个按钮的语音控制指令是“买入 1 美元的 APPL,价格 1.083”。哦,价格变了。

And so voice control folks who wanna use their voice control their entire thing is, you know, tap this button, tap that button, swipe back or whatever. And sometimes, imagine there's a stock trading app for example, it'll have something like, you know, buy APPL for 100 and whatever is dollars right now. And that price is changing constantly. And the the the voice control message required to trigger that button is buy dollar APPL at $1.08 3. Oh, the price has changed.

Speaker 0

买入 1 美元的 APPL,价格……所以实际上,考虑到语音控制,做到更好,就像你说的那样,会带来很大的进步,因为我也在学习。就像边学边做一样,对吧?

Buy dollar APPL at the and so actually, taking voice control into account, doing better, progress as you said, it goes a long way because I'm learning too. Like ball learning. Right?

Speaker 2

是的。而且克莱门斯,你也做出了一个非常棒的应用。

Yes. And despite also, Clemens, you make an amazing app.

Speaker 0

嗯。

Yeah.

Speaker 2

但我并不擅长设计。哦,你还可以做的一件事就是坚持使用原生组件。比如,你可以变得非常棒,但如果你还没那么棒,那就坚持使用原生组件,因为苹果已经在它们的原生组件中集成了你能想到的所有辅助功能。因此,如果你一开始无法做到这些,那就坚持使用原生组件,然后随着你的理解逐渐加深,再慢慢加入自己的风格,就像开发其他任何应用程序一样。

But I'm not good at design. Oh. Something you can also do is just stick to the native components. Like, you can be amazing, but if you're not amazing, just stick to the native components because Apple has already done the work for putting in all the accessibility you can think of into their native components. So if you kind of can't get there just to begin, just stick with the native components and then slowly start making it more your own as you would with, like, any other kind of application.

Speaker 0

嗯,我觉得你真的很棒,米凯拉。

Yeah. I think you're amazing, Mikaela.

Speaker 2

谢谢。

Thank you.

Speaker 0

她很棒吗?是的。就是这样。好了。

Is she amazing? Yes. There we go. Okay.

Speaker 2

我找不到刚才讲到哪里了,因为我不会阅读。

And I lost my place because I can't read.

Speaker 0

好的,除了阅读之外,你真的很棒。Rob,我们在这儿已经接触过不少其他的人。当我在开发我的应用时,想要规划一些功能并添加到我的应用中,还有其他的途径,对吧?

Okay. Apart from reading, you're amazing. Rob, we've been through a bunch of other folks here. When I'm building my apps to have plan things out and plan I wanna add to my app, there are other routes. Right?

Speaker 0

除了不断增加更多的原生组件之外,还有什么其他方式吗?我还能做些什么让我的应用更容易被用户使用?

As well as going adding more and more native components, whatever. What else can I do to make my app more available to folks to use?

Speaker 1

原生组件肯定是开始的最佳选择。不过,确实还有一些 iOS 中内置的功能,你可能不会立刻想到它们是辅助功能,但它们会对用户产生巨大的影响。比如 AppIntents(应用意图),我们这周和 Daniel Steinberg 举办了一个很棒的研讨会,专门讨论了 AppIntents。对于有辅助功能需求的人来说,这是一个非常出色的改进,因为它减少了完成某项任务时与设备交互所需付出的努力。而辅助功能的核心就是从用户的角度出发,让他们以最适合自己的方式使用你的应用。

The native components is definitely the place to start. But yeah, there are other features that are built into iOS that you might not necessarily think are accessibility features, but are gonna make a big difference to people. So things like AppIntents, we had a great workshop for with Daniel Steinberg this week about AppIntents. And they are a fantastic improvement for people who have accessibility needs because it reduces the amount of effort you have to to expend in interacting with a device to get something done. And accessibility is all about meeting people where they are and allowing people to use your app in a way that works for them.

Speaker 4

嗯嗯。

Mhmm.

Speaker 1

像 Siri 这样的功能,通过 AppIntents 支持 Siri,以及由此带来的各种其他功能都非常棒,因为这意味着更少的点击,你可以更快地访问最重要的功能。对于有残疾的用户来说,与设备交互需要付出更多的努力。他们可能使用诸如 VoiceOver(旁白)这样的辅助技术,这比直接与屏幕交互需要更多的滑动和点击;或者有些人因为身体残疾而无法点击屏幕或点击时会感到疼痛。因此,类似 Siri 的功能就非常有帮助。

So things like Siri, supporting Siri with app intents and the various other things that that unlocks is fantastic because it means less taps, means you can get to the most important things really quickly. And for people with disabilities, it means a lot more effort for them to interact the device. Either they're using an assistive technology like voice over, which uses a lot more swipes and taps than maybe it would do just interacting directly with the screen. Or maybe someone's got a physical disability where it's actually painful for them to tap or they physically can't tap. And so things like that are fantastic.

Speaker 1

还有像暗黑模式(Dark Mode)这样的功能,可能不会立刻被归类为辅助功能。但对于某些人来说,比如患有白内障的用户,非常明亮的屏幕可能会让他们感到不适。同样地,有些人有特定的视觉障碍,他们在深色背景上阅读亮色文字会有困难。因此,同时支持这两种模式非常重要。此外,使用系统 API 时,要确保你的文本支持的行数不会减少。

Other features like dark mode, might not necessarily think of as an accessibility feature. But for some people, like, for example, if someone's got cataracts, then a really bright screen can be actually painful for them to look at. And the other side as well, supporting light mode, some people with, certain visual impairments struggle to read bright text on a dark background. So supporting both of those is super important. And, yeah, with using system APIs, just ensure that you're not reducing the number of lines that your text will support.

Speaker 1

确保你使用标准的文本大小,类似这样的事情。

Make sure that you're using standard text sizes, things like that.

Speaker 0

对,等等。如果我做好了 AppIntents,我去过 Daniel 的研讨会,并且把 AppIntents 做得很好,听起来好像 Siri 就能帮你完成一部分工作。

Right. So hold on a minute. If I do great app intense, I've been to Daniel's workshop and do great app intense, Siri will do a chunk of the work for you by sounds a bit right.

Speaker 1

是的,因为你可以

Yeah. And because you can

Speaker 0

直接说 Siri 就行。

just say s I r I.

Speaker 1

是的。或者你也可以使用“快捷指令”应用,例如,将某些内容添加到你的主屏幕。

Yes. Yeah. Or you could use the Shortcuts app, for example, and add something to your home screen.

Speaker 3

没错。

Yeah.

Speaker 1

所以,是的,你可以通过一次点击完成某个操作,或者你可以直接通过语音助手让手机帮你完成某件事,而不必每次都手动打开应用、进入应用中的特定界面、找到你想要操作的对象,然后才执行操作。如果你正确地进行了设置,就可以确保你的应用只需一次交互就能完成操作,这将为所有人带来极大的便利。很好。

So, yeah, you could just do something with a single tap, or you could just ask the person on your phone to do something for you rather than having to open the app, go to the screen in the app to perform the action, find the thing that you want to perform the action on, and and then finally perform the action. If you've set the set it up correctly, then you can make sure that your app will only do that in one interaction, which is gonna make it so much easier for everyone. Nice.

Speaker 2

不过我们先退一步来看。我们已经讨论过 VoiceOver 和语音控制,但这些功能是那些没有残障的人平时不会使用、甚至可能从未听说过的东西。我自己也是直到最近才知道语音控制是什么的。当我开启它之后,我觉得这真是太酷了。但同时你也看到了,有些应用是多么难以使用。

Taking a step back though, we've talked about voice over and voice control, and that's not something that people who do not have disabilities use every day and maybe have never even heard of. I didn't even know what voice control was until kind of relatively recently. And then I turned it on. I'm like, oh, this is so cool. But then you see how inaccessible some apps are.

Speaker 2

但话说回来,我们来想想一个你可能每天更容易注意到的例子。比如,有些人患有色盲,而且色盲的程度也各不相同。这一点在游戏领域尤其重要。那么,克莱门斯,你一开始是怎么应对这个问题的呢?

But with that, let's think of something that's more like you may notice more every day. So one of those things is, people who are color blind and having, different levels of color blindness too. That is especially important in games. So, So Clemens, how did you, like, tackle that to begin with?

Speaker 4

一般来说,有一些应用程序可以检查你的应用中所使用的颜色,并显示这些颜色在有视力障碍或色觉缺陷的人眼中是什么样子的。Ori 告诉我,这些工具并不总是准确的,因为不同的人对颜色的感知方式存在差异。但一个比较通用的好方法是使用这类应用来检查,例如,你是否使用了一个绿色按钮配上红色文字的设计,这对某些人来说可能很难辨认。通过像 SimDeltonism 这样的应用,你可以看到这两种颜色之间的对比度其实并不理想。此外,还有一个你始终可以做、而且总是有帮助的事情是:永远不要仅仅依靠颜色来传达信息。

In general, there there are certain apps with whom you can check the colors that are used in your in your app and see how people with certain blindness conditions or color vision deficiencies experience the colors. Ori told me that they are not always correct and there are certain ways how how people experience those colors. But a general good way is to use an apps like to check if you have, for example, a green button with a red text on it that could be hard to read for certain kind of people. And with an app like SimDeltonism, you can see that the contrast between those two colors are actually not very good. And another thing that you can always do and that always helps is to never just use color alone.

Speaker 4

如果你在设计什么东西,因为我们有非常棒的 SF Symbols 图标库,我们可以直接插入 SF Symbol 来表示文本的不同状态或某些元素的不同状态。既然这些图标是免费提供的,那就直接使用它们吧。永远不要只依赖颜色,要确保你的应用对所有用户都具有可视性。

If you design something, because if you we we have access to the amazing library of SF Symbols, and we can just plug in SF Symbol to indicate different states of text or of of certain elements. And if you have those for free, just use them. Never use color alone and really make sure that it's visible for anyone anybody who uses your app.

Speaker 0

没错。这就像一个 Swift 的环境键值。对吧?是的。在不需要颜色的情况下进行区分。

Yeah. And it's like a swifty y environment key. Right? Yeah. Differentiate without color.

Speaker 0

只要检查一下这个布尔值。如果是的话,就添加一个纹理或条纹之类的元素。没错,让它更突出一些。我还想问一件事,因为我认为这在《Fauna》艺术设计中特别出色。朋友们,我不是在自吹自擂。

Just check that boolean. If it is, add a texture or a stripe, something to it that Exactly. Makes it stand out. There is one thing I wanna ask about, because I think this is particularly very very brilliant in the art of fauna. I'm not being famous, folks.

Speaker 0

当你打开应用时,有一个选项是问你是否想看到令人害怕的东西,比如蜘蛛之类的。对吧?就是虫子之类的东西。对吧?

There's a there's an option when you launch the app to say, do you want me to show scary things or not? Like, spiders are similar. Right? Bugs, basically. Right?

Speaker 4

是的。那是些虫子、蜘蛛、蠕虫、鳄鱼,因为我女朋友不是很感兴趣

Yeah. It's bugs, spiders, worms, crocodiles because my girlfriend is not very keen

Speaker 0

谁喜欢这些东西?是啊。我觉得谁

of them. And Who likes them? Yeah. I think Who

Speaker 4

谁会喜欢鳄鱼呢?还有那一类动物,因为这些动物的图画非常逼真,对某些人来说有点吓人。就连我自己在开发应用程序的时候也不是真的很喜欢看它们,但这些动物非常有趣,了解它们也很有意思。所以我想把它们加进去。但如果有人害怕这些动物,他们应该有一个选项可以禁用它们。

who likes crocodiles? And bunch of a bunch of those animals because they they are very accurate drawings of those animals, and it's kinda scary for certain kinds of people. Even I did not really enjoy looking at those when I developed the app, but they are very interesting animals and it's very interesting to learn about them. So I want to have them in there. But if somebody is scared of them, they should be have an option to disable them.

Speaker 4

然后如果他们再想看这些内容,就会收到警告。当他们点击动物时,会弹出一个小警告:你真的想看这个吗?只有在确认之后才会展示给他们。

And then if they think again and want to actually play them, then they are warned. They get I tap on the animal. They get a little warning. Do we really want to see this? And then only then it's presented to them.

Speaker 4

很好。

Nice.

Speaker 0

这只是多想了一步,考虑一下别人的感受。对吧?是的。暂时站在别人的角度想一想,这对别人来说意义重大。

It's just that extra little step of thinking how someone else might feel. Right? Yeah. Pull yourself in their shoes temporarily, it makes the world difference for folks

Speaker 2

我就是那种人。我非常感激你提到的,比如,不要显示蜘蛛。所以我第一眼看到的就是这个提示。否则我可能会立刻哭出来,然后立刻删除你的应用。

to And I am one of those people. I appreciated it so much that you said, like, don't show spiders. So that was the first thing I saw. I may cry. Immediately, like, delete your app.

Speaker 0

你最近有没有想象过一个游戏,里面用蜘蛛或者其他什么东西取代了原来的内容?

Did you imagine a game recently that was sort of replaced with spiders or something else entirely?

Speaker 4

是的。那叫什么来着?

Yeah. What was it called?

Speaker 0

没关系,你知道的。我

No pressure, you know. There's a I

Speaker 4

我一时想不起来替代方案到底是什么,但有一款游戏叫 Cats。

can't think of it on the top of my head what the replacement actually was, but there is a a game that's Cats.

Speaker 0

就是 Cats。

It was cats.

Speaker 4

对,谢谢你,谢谢你。

Yeah. Thank you. Thank you.

Speaker 0

为现场观众加快一点节奏。没错,没错。但那是用蜘蛛替换了猫,对吧?

Hurry for the live studio audience here. Yeah. Yeah. But it took spiders out for cats. Right?

Speaker 4

没错。

Exactly.

Speaker 0

同样的意思,其实你并不真正在意,是蜘蛛。你只是想看到某种带有威胁性的东西朝你过来,而猫很擅长这种表现。有一场非常精彩的演讲,我们会在节目备注中提供链接,还有一个叫 Sim Daltonism 的工具也非常棒,是苹果公司关于可访问性的内容。演讲者是 Linda Dong 和另一位人士。

Same mean, you don't actually care. It's spiders. You just wanna see something medicinally coming towards you and cats are good at that kind of thing. There is a very good talk, which we'll link in the show notes as well as Sim Daltonism, is also very good, from Apple about accessibility. And it was Linda Dong and someone else.

Speaker 0

这场演讲深入探讨了许多文化差异。有些内容你可能已经了解,比如我们会用红色表示不好,绿色表示好;但在亚洲正好相反,红色代表好,绿色代表不好。因此像股票应用中,如果你表现得好坏不同,颜色也会随之变化。类似这样的问题还有很多,你可能不会立刻想到,因为这是文化上的差异,对吧?

And it really went into lots of cultural differences. Some things you might know about already, for example, we use red to mean bad and green to mean good, but in Asia that flips around, so red is good and green is bad. And so then we use like the stocks app, for example, it flips colors around if you're doing well or not. And it goes to a whole range of things like that you wouldn't necessarily think about because it's a cultural gap. Right?

Speaker 0

除了语音控制之外,我还遇到一个挑战,那就是 VoiceOver 是一项非常强大的技术,各位。它有很多功能,非常丰富。我最近开发了一款应用,花了很长时间去完善。我不会在这里推销它,我只提一下 Fauna。

One thing I've struggled with, as well as the voice control, is voice over is an extremely powerful technology, folks. There's lots and lots to it. I spent a long time making an app I made recently. I'm not gonna plug it. I only plugged out Fauna here.

Speaker 0

抱歉,我尽了最大努力。我对我的朋友 Baz Brooke 说了这件事,他非常精通可访问性,他回信发来了一长串问题列表,说这个不对,那个也不对,而我已经非常努力了。其中一个例子是标题层级的问题。当你使用 VoiceOver 时,你可以滑动滑动,随意逐段浏览文本,或者切换到标题模式,从一个一级标题跳到下一个一级标题,跳过大量文本内容。

Sorry. The best I possibly could. I said to my friend, Baz Brooke, who's excellent accessibility, they mailed back a long list of this is wrong, this is wrong, and I had worked so hard. And one of the examples was headings. When you're working in voice over, you can say, you know, swipe swipe swipe, move through text by paragraph as much as you want to, or switch to headings mode that goes to heading one to the next heading one, skipping up through whole chunks of text.

Speaker 0

这就像一个简单的快捷键,我之前却完全不知道。这是一个非常微不足道的小修复,但它让整个应用的这一部分体验变得好很多。我喜欢这种小改动。对吧?你知道,这里加一行,那里加一行,砰,整个应用就变好了。

It's like one fifty one modifier, and I wasn't aware of it. It was a trivial trivial fix, but it makes that whole part of the app much much better. And I I like that kind thing. Right? You know, one liner here, one liner here, boom, the whole app's better.

Speaker 0

我觉得真的真的很好,我想是这样。

It felt really really good, I think.

Speaker 2

所以你可以顺其自然地按照预期使用这些API,就像你所说的那样。

So that really flows into just use the APIs as they're intended to Just like you said.

Speaker 0

所以你对此感到冒犯。

So you are offended by that.

Speaker 2

这太棒了。不过丹尼比我知道得要多得多。

It's amazing. Danny would know way more about that than I would though.

Speaker 3

是的。我想我们一直在讨论的是例如使用原生组件,或者让某些内容具备可访问性需要多少努力。而可访问性方面的问题有时候是越少越好。因此,我决定何时以及如何处理新的UI组件的框架是首先如我们所说尽可能使用原生组件,其次根据自己的喜好进行自定义。

Yeah. I think we've been speaking about using native components, for example, or how much effort is to make something accessible. And the thing with accessibility is that sometimes less is more. So my framework for deciding when how to approach a new UI component is first, as we said, use native components as much as possible. Second, customize them to your liking.

Speaker 3

如今,你可以非常非常高度地自定义原生组件。比如,我们经常看到的一个例子是CV I,你现在可以配置按钮样式,例如有一个突出的按钮。但很多人仍然会使用圆角矩形的形状来设计按钮。这意味着按钮不是你想象的那样。

And these days, like, you can really, really customize native components a lot. So one example we've seen a lot, for example, with c v I is you now have a button configuration or a button style where you can have a prominent button. But a lot of people still do, like, a rectangle with rounded corners that is just a shape. So that means that button No. You're not people.

Speaker 3

是一个

Is a

Speaker 0

有点,他会找到你,然后敲你的头。至少Vision OS是这样,对吧?因为Vision OS使用按钮来显示高亮颜色,对吧?

bit He will find you and you will smack around the head. And very least, Vision OS. Right? Because Vision OS uses buttons to look for the highlight color. Right?

Speaker 3

真的吗?衡量一下,对吧?没错。因此工作量要少得多。

Really? To gauge. Right? Exactly. And so it's much less work.

Speaker 3

我的意思是,我明白你必须做一些研究,所以不要满足于在Stack Overflow上看到的第一个答案,或者Chat GPT的建议。罗布和我在这里的会议上讨论过,我们做了一个关于可访问性的研讨会,我们正在开发一个应用,希望它变得非常难以访问。在某个时候,我们感到非常困难,因为过了一段时间之后,你就会习惯性地知道该怎么做了。

I I mean, I understand that you have to do some research, so don't settle for the first answer that you see in Stack Overflow or what chat GPT suggests. Rob and I were talking about for here in the conference, we've done a workshop about accessibility, and we're creating an app that we wanted for it to be super inaccessible. At some point, we were, like, really struggling because it also, like, after some time becomes second nature that you know how to

Speaker 0

是的。

Yes.

Speaker 3

比如,避免做某些特定的事情,诸如此类。但我们提到过,有时候去 Stack Overflow 查找某个功能的实现方法,往往会得到一个很多时候都不可访问的解决方案。而且很多时候,它需要更多的代码和更多的工作量,相比之下,找到适合任务的正确 API 会更有效率。我还有几个例子,比如 UI kit 中的表格视图(table views),其中有一些数据源,以及几个你需要指定标题的函数。

Like, avoid doing certain things and things like that. But we mentioned how sometimes going to Stack Overflow and looking how to do something leads you to a solution that is inaccessible a lot of times. And a lot of times requires more code and more work than finding the right API to do for the right job. I have a couple more examples, table views in UI kit. There's a couple of the data source, a couple of functions that that you specify headings.

Speaker 3

但很多时候我们只是使用单元格(cells),并把其中一些单元格作为标题来使用。这意味着 VoiceOver 不会自动识别这些单元格为标题,因此你需要额外添加一行代码来标记它们,但人们往往会忘记这一点。

But a lot of times we use just cells and we start some of the cells as headings. And that means that VoiceOver is not going to identify those as headings, then you need to add that extra line of code that is not a match, but people tend to forget about it.

Speaker 0

你说的这个 UI kit 是什么东西?抱歉。

What is this UI kit you speak of? Sorry.

Speaker 3

我年纪大了。另一个 UI kit 的例子是这样的:比如你知道,无论用户如何识别某个可交互的元素,都需要说明它是一个按钮,对吧?按钮会自动被识别为按钮,但表格视图中的单元格却不会,因为一个单元格可能是可交互的,也可能不是。但如果你在单元格的 accessory 类型中添加了 disclosure indicator,那么这就表示这个单元格会带你去别的地方。

I'm old. Another example of UI kit as well is like you know how, like, whichever user for identifying that something is interactive, whichever needs to say that it's a button. Right? And buttons are automatically identified as buttons, but cells in a table view are not because a cell can be interactive or not. But if you add the disclosure indicator in the accessory type of the cell above things, okay, that's a cell that is going to bring you somewhere else.

Speaker 3

所以它其实就是一个按钮,系统会自动为你添加按钮的相关属性。这就是我所说的意思,比如,尽量找到适合任务的正确 API,然后尝试使用它们。虽然这有时候很难判断,有点模糊,但还是要尽量使用已有的 API,并让它们来完成工作。我还有几点想说。比如,如果你确实需要创建一个原生不存在的自定义组件,那也没关系。

So that's a button, and they add the button trade for you. So that's the kind of things I mean, like, try to find the right API for the right job and try to it's difficult to know. Like, it's a bit ambiguous, but try to use APIs up and then let them to do to use them. I And think a couple more things as well. Like, if you then need to create a custom component that doesn't exist natively, that's that's fine.

Speaker 3

但这时候你就需要多做一些工作,努力让它尽可能地像 SwiftUI 中的原生组件一样工作。现在我回到之前的话题,有一个非常酷的 API 叫做 accessibility representation(可访问性表示)。是的,举个例子,我们之前有一个评分组件,你可以从一个赞到五个赞进行评分,这本质上其实就是一个滑动条(slider)。

But then try to you need to do some more work and try to for it to work as similar as possible to another native component in SwiftUI. Now I'm back to the the there's a really cool API called accessibility representation. Yes. So for example, we had an example where we had a rating component. You you could rate something from one thumbs up to five thumbs up, and that's effectively a slider.

Speaker 3

因此,使用 accessibility representation,你可以传入一个滑动条,VoiceOver 就会把这个组件当作滑动条来处理。但这只需要很少的代码。如果你需要创建一个全新的、具有某种奇特交互方式的组件,那么是的,我认为你得做一些研究,也许找一些用户测试一下,获取一些反馈。

So with accessibility representation, you pass a slider, and then voice over treats that component as a slider. And but there's very little code in vault. If you then need to do a component that is something super new with some crazy interaction, then, yeah, I think you have to assume that you have to do some research, maybe try to find some users, and try to get some some feedback from them.

Speaker 0

或者改变你的想法。没错。如果你觉得你需要一个自定义的 UI 标签栏(tab bar)组件,其实你并不需要。对吧?因为如果你尝试重新实现 UI 标签栏或导航栈(navigation stack)的所有功能,里面其实有很多内置的功能,比如左右滑动、点击、长按等等。

Or change your mind. Exactly. If you think you need a custom UI tab bar thing, no, you don't. Right? Because if you try and remake all the features of UI tab bars or navigation stack, there's lots of features inside baked into that for, you know, swiping here, tapping here, holding here.

Speaker 0

这些功能你可能不会立刻意识到,除非你真正深入研究过。而你这么做又有什么意义呢?你想实现什么?

There's a lot to it you wouldn't necessarily realize unless you actually really, really researched it first. And there's no point. What are trying to do?

Speaker 3

没错。那将会是最后的最后的选择。是的。

Exactly. That that would be the very, very last resort. Yeah.

Speaker 2

是的。当你继续推进我们一直在讨论的所有事情,并让所有内容都实现无障碍访问时,它毕竟是代码,所以也会出现倒退的情况。不幸的是,并不是说我个人会这样,但情况如此。

Yeah. And as you keep going with everything that we've been talking about and making everything accessible, It is code, so that means there are regressions as well. Unfortunately, not I mean, not for me, but,

Speaker 0

你知道的,只有在你发布东西的时候才会这样,Mikaela。对吧?

you know Only if you ship stuff, Mikaela. Yeah?

Speaker 2

看,这就是关键所在。

See, that's see, that's the secret.

Speaker 0

是的。是的。不要发布。是的。你好。

Yeah. Yeah. Don't ship. Yeah. Hello.

Speaker 2

你不用担心。但当你真的发布的时候,Rob,你能跟我们多讲一些关于无障碍访问以及测试方面的事情吗?

You don't have to worry. But when you do though, Rob, can you tell us more about, like, how does it work for accessibility and, like, testing?

Speaker 1

测试对于你写的任何代码来说显然都是非常重要的。我的意思是,就像Danny提到的那样,Stack Overflow对我们来说是一个极好的资源,帮助我们找到那些不具备无障碍访问特性的代码。所以我想,对于你从Stack Overflow复制粘贴的任何代码,你也应该做同样的事情——确认它确实实现了你认为它能实现的功能,并进行尝试。如果你熟悉辅助技术的话,也可以直接使用它们。但Xcode自带了一个名为Accessibility Inspector的应用程序,它可以为你提供大量信息。

Testing is obviously super essential for any code that you write. I I mean, as Danny kind of mentioned, Stack Overflow has been a fantastic resource for us in finding code that is inaccessible. So I guess the same thing as you would with any code that you copy and paste from Stack Overflow, you know, check that it actually does what you think it does and and try that out. You can always fire up some assistive technologies if you feel comfortable with those. But Xcode comes with an application included called Accessibility Inspector, which will give you a load of information.

Speaker 1

你还可以在其中运行一个自动化的审核检查,这个功能现在已经集成到XE UI测试中了。因此,如果你有自动化的UI测试,你可以运行相同的审核检查,这将是一个非常好的方式来检测回归问题,前提是你已经知道一切运行正常。此外,无障碍检查器还会显示你的控件或元素向旁白、切换控制、全键盘访问或其他任何辅助技术呈现的所有信息,并告诉你可用的操作有哪些,它叫什么名字,值是什么,是否有任何提示,诸如此类。通过这些信息,你可以判断它是否符合你预期的体验方式。

There is, like, an automated audit that you can run within there, which actually is now built into XE UI tests as well. So if you have automated UI tests, you can run the same audit, and that is a really great way to check for regressions once you know everything's working as it should do. But also, yeah, the accessibility inspector will give you a readout of all the information that is being presented for your control or your element to voice over or switch control or full keyboard access or whatever assistive technology it is, and it will tell you what actions are available. It'll tell you what it's called, what its value is, if there's any hints, anything like that. So you can get a good idea from that as to whether that's going to be experienced the way that you expect it to.

Speaker 1

要准确知道什么信息应该放在哪里,确实需要一些经验。这是我们每天都会和Danny讨论的问题。这部分信息应该放在这个属性里还是另一个属性里?你不可能做到百分之百正确。但经过一段时间的实践和尝试之后,你就会逐渐熟悉这些信息应该放在哪里。

It does take a little bit of experience to know exactly what should be where. It's something that, you know, even me and Danny kind of talk about this on a daily basis. Should this bit of information should should it be in this property or this other property? You're never gonna get it a 100% right. But after a bit of working with it and trying it out, then you'll kind of get used to what should be where.

Speaker 1

如果你在一家大公司工作,可以安排一些使用辅助技术的真实用户来测试你的产品,因为这才是真正了解情况的唯一方法。如果你开发的是像Clements这样的独立应用,你可以在应用中添加一个电子邮件地址,让用户可以就无障碍访问的问题联系你。我知道Danny在Spotify工作时就这样做过,希望你不介意我提到这件事。当Danny还在Spotify的时候,能够方便用户联系你并提供反馈是非常重要的,这会给你带来非常宝贵的信息。

And if you're in a larger company, if you can arrange some user testing with users who use assistive technologies because that's really the only true way of knowing. And with an indie app like Clements, you can add in, like, an email address for people to contact you with with accessibility queries. I know that's something that I think Danny has done at Spotify, you don't mind me mentioning that. When Danny used to work at Spotify, it it's super important that people are able to contact you and give you feedback, and it is gonna give you some really valuable insights.

Speaker 2

重进步,而非追求完美。

Progress over perfection.

Speaker 0

没错,这正是我们标题所表达的。对吧?所以过去,当我把某件事做得非常出色时,我确信这已经是最好的状态了,这时候我就会说『屏幕 curtain 时间到』。你觉得这样的评价合理吗?

That's right. That's our title right there. Right? So I've, in the past, when I've really nailed something, I'm convinced this is the best it can be, now it's screen curtain time. Is that you think that's a fair assessment?

Speaker 1

屏幕 Curtain 功能确实很有趣。它是一个旁白功能,而 Danny 总是得提醒我需要用几个手指操作。是两个还是三个手指?对,三个手指。你用三根手指轻触屏幕,三击三下,它就会隐藏屏幕上显示的所有内容。

Screen curtain is definitely fun. So screen curtain is a voice over feature, which Danny always has to remind me how many fingers it is. Is it two or three fingers? Three three fingers. You tap the screen with three fingers, triple tap with three fingers, and it will hide anything that's on the screen.

Speaker 1

从本质上讲,它相当于关闭了屏幕显示。

Essentially, it turns the screen off.

Speaker 0

但功能仍然有效。所以它并不是真正关掉了屏幕,更像是屏幕不显示任何内容,但依然在运行。

But it still works. So it's not off. It's like it's the screen isn't showing anything, but it's still functioning.

Speaker 1

是的,你仍然可以与它互动。你可以继续点击、滑动等操作,VoiceOver 仍然会为你朗读内容。这其实是 VoiceOver 用户的一个隐私保护功能,因为如果你看不到屏幕上的内容,你就不会知道自己是否在无意间向他人展示了某些信息。没错。

Yes. So you can still interact with it. You can still tap and swipe and all that kind of stuff, and VoiceOver still speak to you. Really, it's a a privacy feature for VoiceOver users because if you can't see what's on the screen, you don't know what you're necessarily showing to other people. Right.

Speaker 1

不过,作为一种测试工具,我认为它非常有用。因为无论你多么熟悉自己的应用,当你看不见它的时候,你会发现其实你并没有自己想象的那么了解它。

So but, yeah, as a testing, tool, it's a a really great leveler, I think. Because as much as you think you know your app, when you can't see it, you probably don't know it as well as you think you do.

Speaker 0

是的,说得有道理。好的。所以希望正在收听的朋友们,从大家的分享中学到了一些小技巧。

Yeah. Fair enough. Okay. So folks, hopefully, listening along to this. They've got some tips from everybody so far.

Speaker 0

一些可以逐步改进的小点,不断改进、不断进步,最终实现情感上的共鸣。归根结底,Clemmy,作为一位独立开发者,开发了一些出色的应用,你觉得添加这类功能的好处是什么?

Small things to improve, improve, improve, progress, progress, progress with the goal of affection. Ultimately, Clemmy, what you say for you as an indie developer making some killer apps, what are the benefits of adding this kind of feature to

Speaker 4

首先,我认为这本身就是一件正确的事情。是的,我非常相信这一点。此外,我也是最近才成为全职独立开发者。在此之前,我一直是在公司工作的同时开发自己的应用。

So first and foremost, I think still think it's the right thing to do. Yeah. I I definitely believe that. But also, like, I'm only recently full time indie. Before that, I'm always worked at companies while doing my my apps.

Speaker 4

所以,我确实经历过一些艰难的时期,那时我不太想开发这些功能,或者没有足够的时间去处理它们。再加上我还有全职工作,这让我感到很有压力。但使用我应用中的辅助功能的那些人,他们其实是特别友善的人,他们会给我写最友善的邮件、留下最积极的反馈,还会在应用商店给出好评等等。我从他们那里获得的这些温暖和鼓励,真的帮助我度过了那些艰难的开发时光。是的。

So I had rough periods where I didn't like to work on them or I hadn't didn't have enough time to work on them. And it was stressful be next to my full time job. But the the people who use my accessibility features in my apps are actually the nicest people and write the nicest emails, the nicest feedbacks, reviews on the app store and everything. So the love that I got back from those people really helped me to push through those darker times or do that's the those harder times in development. So Yeah.

Speaker 4

当然值得为此付出努力。另外还有一个额外的好处,如果你的应用具备良好的辅助功能,苹果公司会非常认可这一点。我的两款游戏就因为出色的辅助功能被提名为苹果设计奖候选作品,而且也多次因此被苹果商店推荐。所以,就冲这一点,也是值得去做的。

Definitely work for that that one. And also bonus feature, Apple really likes it if you do make stuff accessible. So two of my games were actually nominated for an Apple Design Award because of their accessibility. And I'm also been featured multiple times because of the accessibility. So if it's just for that, then yeah.

Speaker 4

也没问题。但我仍然认为这是正确的事情。

Also fine. But I still think it's the right thing

Speaker 0

每个人都应该去做这件事。

to do and everybody should do it.

Speaker 4

是的。另外,我还想补充一点,有时候你会觉得你添加辅助功能只是为了服务社区中一小部分人,但实际上,使用这些功能的人往往比你想象的要多得多。所以,让应用具备辅助功能,其实最终会让几乎所有人都受益。

Yeah. And additionally, one thing I also wanted to mention, it's always surprising that you think you add accessibility features just for a certain smaller part of the community, but actually it's often that much more people actually use them than you might think. So making app accessible makes it better for basically everybody.

Speaker 0

是的。我记得几年前,Peter Steinberger 曾提到他们在 PSPDF Kit 中做过一些关于动态字体的统计。他们发现大约有 40% 的用户选择了更小的字体设置,因为他们希望在屏幕上看到更多的内容。从这个角度看,使用动态字体其实也帮助了这些高级用户,使界面更紧凑、更高效。

Yeah. I thought I remember Peter Steinberger saying some years ago, they ran some stats in PSPDF kit about dynamic type. And they found something like, think 40% of users had a smaller type setting. They wanted to see even more things on their screen. And so just using dynamic type helps power users in that respect when I'm more dense to you.

Speaker 0

对,没错。是的,是的。

Right? Exactly. Yeah. Yeah.

Speaker 2

是的。这和苹果几年前在妇女节期间举办的活动中的观点一致,今年也是一样,大概是在三月的某个时候,全球各地都有类似的活动。我记得当时参加的时候,Linda Dong(应该是那位演讲者)提到过,当你让应用更具备辅助功能时,意味着更多人可以使用你的应用,进而意味着更多人会使用你的应用,这最终也可能为你带来更多收入。

Yeah. That follows along with Apple had a women's day event a couple years ago, and it's happening this year as well. It's like in March sometime, and they're also all around the world. But when I went, one the things I took away with was Linda Dong, I believe it was, had said that, when you make your app more accessible, that means more people can now use your app. And then that also means more people now use your app and that could also mean more money for you.

Speaker 2

所以如果你需要一个理由去说服你的老板:嘿,我们应该让这个应用更具备辅助功能。你可以这样跟他说:更多人会使用它,也就意味着更多人愿意为它付费。如果他们担心的是收益问题,这就是你可以强调的重点。另外,你还可以在“全球无障碍意识日”获得苹果商店的推荐展示,对吧?

So if you also need a reason to like convince your boss, hey, we should make this app more accessible. You can be like, well, more people use it, more people will pay for it. So if they're worried about money, that can be the main thing, you wanna reach out to them about. But then also, you can get featured for Global Accessibility Awareness Day. Right?

Speaker 4

是的。

Yes.

Speaker 2

好的。Danny,你能跟我们说说这个吗?

Yes. Danny, can you tell us about that?

Speaker 3

好的。全球无障碍意识日,或者对我们朋友来说简称GAT,每年都会举行,我记得是在五月。今年是第十四届了。这是一个很好的机会,你可以先尝试寻找你身边的或者线上的活动,去更多地了解无障碍。我认为这也是在你的公司做点什么的好机会。

Yeah. So Global Accessibility Awareness Day or GAT for for Friends, it happens every year, the May, I believe it is. And then this year is the fourteenth edition. So, yeah, it's a great opportunity for first try to find events around you or online to learn more about accessibility. I think it's a great opportunity as well to do something at your company.

Speaker 3

比如,你可以尝试组织一场讲座、黑客马拉松或者测试活动,诸如此类的事情。加入讨论,去了解它。这一天是为了提高大家的意识。我喜欢Jensen Asamson,其中一位联合创始人说过的一句话,他说这一天也是鼓励我们再努力一年的行动日,因为我们不仅仅是在某一天关注无障碍,而是每一天,我们做的每一件事都应该如此。

Like, you could try to organize a talk or a hackathon or a testing session, anything like that. Join the conversation. Just learn about it. It's a day to raise awareness, but I like Jensen Asamson, one of the cofounders, says that it's also a day to encourage one more year of action because there's not one day that we need to care about accessibility, yeah, every day and every day everything we do.

Speaker 0

是的。好了,朋友们,感谢大家的参与,也感谢你们提供了这么多精彩的反馈。无论是听众还是现场的各位,希望你们从中获得了一些技巧和实用的建议,并能应用到你们的应用中,让它们对所有人更加友好。

Yeah. Well, listen, folks. Thanks for coming along. Thanks for giving all your incredible feedback. Listeners and folks here live, hope you've had some tips, some action advice to apply to your apps to make them better for everyone.

Speaker 0

在我们结束之前,想快速问大家一个问题。Arctic Conference 到目前为止是一场非常棒的活动,你们觉得到目前为止最喜欢的是什么?来吧,Rob先说。

Before we finish, wanna ask you real fast. You've Arctic Conference has been a great event so far. What's been your favorite thing about the event so far, do you think? Go, Rob.

Speaker 1

我想我得说去痛快地泡个冰水澡。

I think I'm gonna have to say going for a nice plunge.

Speaker 0

哦,哦,不要吧。好吧,你选了一条痛苦的路。

Oh, oh, no. Okay. The painful route fine.

Speaker 1

是的。这并不是我曾经想过自己会去做的事情,而且我非常讨厌它。但是一出来,感觉棒极了。

Okay. Yeah. I it's not something I ever thought I would see myself doing, and I hated it. But as soon as I got out, it felt incredible.

Speaker 0

嗯,你的头发看起来确实很柔顺。等等,我喜欢。Mikayla,请说。

Well, your your hair does look luxurious. Hold on. I like it. Mikayla.

Speaker 2

我对这次会议最喜欢的部分是,演讲真的太棒了,所以我特别喜欢这些内容。但我觉得我现在还不能确定,因为我们明天还要去滑雪,那才是最精彩的。所以我感觉那可能会成为我最喜欢的环节。

My favorite thing about the conference, the talks were amazing, so I will love those. But I don't think I can say yet because we haven't gone snowboarding and that happens tomorrow. So I feel like that may end up being my favorite.

Speaker 0

对我来说,看丹尼尔吃烟熏驯鹿披萨挺搞笑的,那场面非常好。而且还有机会见到AudioKit的创始人阿里(Ari)。我的VisionOS应用中使用了AudioKit。

Yeah. For me, I think watching Daniel eat smoked reindeer pizza was quite funny. That was very good. But also, got to meet Ari who's the guy who founded AudioKit. And I used AudioKit in my VisionOS app.

Speaker 0

我给他看了我的代码,他没有哭。我对此感到有点自豪。他说这代码不算太糟糕。所以我印象非常深刻。克兰(Clem Clem)。

I I I showed him my code, and he didn't cry. I felt slightly proud of that. He wasn't this is not terrible code. So I was I'm very impressed. Clem Clem.

Speaker 4

我觉得这里的整体氛围非常好。人们非常友善,组织者也非常友善。我觉得在这里看到这个社区并与大家交流,是一件非常有趣的事情。

So I think just the overall vibe here was super nice. So the people were super nice. The organizers were super nice. So I think seeing the community here and speaking to everybody that it was just super fun.

Speaker 0

我终于做到了。

I've finally done it.

Speaker 3

我和每个人都有很好的互动,包括打电话给植物爱好者、参与者、组织者,每件事都非常棒。再补充一点,这里有太多精彩的研讨会,令人难以置信。我以前从没见过其他会议有如此多精彩的研讨会。

I did with everyone as well, the call plants, the people, the organizers, everything has been really, really amazing. To add something more, like, there were so many great workshops. It's incredible. I haven't never seen another

Speaker 0

确实有很多精彩内容。

There's a lot.

Speaker 3

有如此精彩的研讨会的会议真的不多。正如我所说,我和罗布(Rob)一起组织了一场,这是一次愉快的经历。来参加的人提的问题非常棒,我们进行了非常有意义的交流。是的,这真是一次愉快的经历。

Conference with such, yeah, like, amazing workshops going on. And as we as I said, I ran one with Rob, and it's been a pleasure. Like, the people that came, like, had the great questions. We had great conversations. And, yeah, it's been a pleasure.

Speaker 0

是的,我希望明年这个活动还能举办,我真的希望如此。目前我们还没有听到相关消息,我们拭目以待吧。

Yeah. I I hope the event come back next year. I hope so. We haven't heard of it yet. We'll see.

Speaker 0

在座的各位,你们明年还会再来吗?会的。好的。那我们就期待着吧。北极会议(Arctic conference)。

For folks here, would you come back next year? Yes. Alright. So listening along. Arctic conference.

Speaker 0

它到底叫什么名字?这个地方的名字是怎么发音的?

Where is it again? How do you pronounce this place name?

Speaker 2

芬兰奥卢。

Oulu, Finland.

Speaker 0

奥卢。奥卢。奥卢。就在奥卢。奥卢。

Oulu. Oulu. Oulu. It's down Oulu. Oulu.

Speaker 0

在芬兰,明年的这个时候一定会很好。而且北极光也很棒,不是吗?所有的灯光都很棒。是的。当然。

In Finland, this time next year will be well. And the northern lights were great too, weren't they? All the lights were great. Yeah. Course.

Speaker 0

它们太令人惊叹了。就是这样。就是这样。

They're amazing. There you go. There you go.

Speaker 2

我拍了很多照片。对在座的每个人来说,这听起来可能有点奇怪,因为这好像是一件大事,但我们将会在“全球无障碍意识日”发布这个节目。所以,我想呼吁在座的各位:请为你们的应用程序做一件让其更具可访问性的事情。

I have many pictures. And for everybody here, this is gonna sound ock because it's, like, the end, but, we are going to be releasing this on Global Accessibility and Awareness Day. So call to action for everybody here is do one thing in your app to make it more accessible.

Speaker 0

去做吧。就这样。我们希望你们喜欢这次在芬兰奥卢现场录制的《咖啡边的 Swift》节目。如果你希望我们增加或减少这种现场录制的次数,请告诉我们。下周我们将回归常规节目。在此之前,请将这个节目分享给你觉得会喜欢它的人。我们很快再见。

Do it. And that's it. We hope you enjoyed joining us for this in person recording of Swift Over Coffee, live direct from Aulu in Finland. Let us know if you'd like us to do more or fewer of these live recordings, but we'll be back next week with a regular episode. Until then, please do share the show with folks you think would enjoy it, and we'll see you soon.

Speaker 2

剪辑,思考。思考。太糟糕了。忘了。

Editing, thinking. Thinking. Terrible. Forgot.

Speaker 0

你知道,我们在这方面简直是糟糕透顶。

We're the absolute worst of this, you know?

Speaker 2

看,我们会剪辑这个播客。

See, we edit this podcast.

Speaker 0

不。我们不会剪辑。我们第一次就录对了。第一次。全是谎话。

No. We don't. We get it right first time. First time. Lies.

关于 Bayt 播客

Bayt 提供中文+原文双语音频和字幕,帮助你打破语言障碍,轻松听懂全球优质播客。

继续浏览更多播客