介绍
当我触摸某个iOS应用程序
时,我发现UX可以在设置屏幕上更改语言,并且当我尝试对其进行更改时,系统会提示我重新启动该应用程序并自动返回到主屏幕..因此,我对它的实现方式感到好奇,并试图找出答案。
竣工图↓
这是使用应用程序pic.twitter.com/Q9rmDxzlpK中的代码返回主屏幕的方法
— M(@ p_x9)2020年9月14日
UX会故意丢弃应用程序吗?
在下面的文章中详细描述了这一点。
https://news.mynavi.jp/article/20190528-iphone_why/由于即使由于内存不足而导致资源短缺,也会在系统侧释放内存,因此必须丢弃应用程序的情况被认为极为有限。然而,在不可避免的情况下,例如改变显示语言,即使实现了这种UX也似乎没有问题。
如何简单地删除应用程序
如果您只想删除该应用程序,则可以使用退出(0)等将其删除。但是,仅此一项就使应用程序的行为好像突然崩溃了一样,我认为这不合适。
除了退出(0)之外,还可以使用fatalError()或断言来将其删除,但是可以说这不适合这次更改语言。请参考以下文章以正确使用它们。
https://scior.hatenablog.com/entry/2019/04/04/202352
1
2
3 exit(0)//今回使用する
fatalError()//不適
assert(false, "")//不適所以
因此,在退出应用程序之前执行返回主屏幕的过程。这样,可以避免出现崩溃的情况。
代码如下。
1 UIControl().sendAction(#selector(URLSessionTask.suspend), to: UIApplication.shared, for: nil)您可以在此过程之后调用出口(0),但是如果在此过程之后立即调用它,则屏幕似乎会变黑一会,这也是不受欢迎的行为。
1
2 UIControl().sendAction(#selector(URLSessionTask.suspend), to: UIApplication.shared, for: nil)
exit(0)因此,我们将使用计时器稍有延迟地执行它。
我实现如下。完成的代码
1
2
3
4 UIControl().sendAction(#selector(URLSessionTask.suspend), to: UIApplication.shared, for: nil)
Timer.scheduledTimer(withTimeInterval: 0.2, repeats: false) { _ in
exit(0)
}最后
从现在开始我将写文章,所以如果您可以看一下,我会很高兴。
如果您有任何建议或问题(也许您听不懂),请随时发表评论或DM。后记
关于App Store发布时的检查
似乎有一些类似Stack Overflow的意见认为此方法未通过检查。
但是,当我自己检查它时,我发现某些主要应用程序也使用此方法,因此并不总是将其删除。
如果有人申请了使用此方法的应用程序,则可以对发生的事情进行评论将很有帮助。下一个应用程序发布时,我将尝试使用此方法。