UIAlertView 替代方案

11

看来我总是在与UIAlertView斗争,让它按照我的意愿运行。 我不想再斗争了 - 有没有具备以下功能的强大的UIAlertView替代品,还是我需要自己编写?:

  • 能够自定义警报视图的大小/位置
  • 能够更改按钮的布局(堆叠 vs. 并排)
  • 能够通过UITextField或UITextView提示用户输入
  • 当键盘出现时,可以调整大小/重新定位
  • 能够使用UITextView进行滚动文本
  • 对于基本显示,像UIAlertView一样完美无缝
  • 理想情况下,与UIAlertView接口兼容 - 即它是一种即插即用的替代品。

我找到了一些博客和stackoverflow帖子,这些帖子实现了UIAlertView上的自定义 - 这不是我想要的。 我也不想要一份关于如何实现自定义AlertView的指南 - 我知道怎么做,我只想找一个已经由社区维护的。 我想要一种从头开始的替代品,适用于App Store提交,并且未来防范UIAlertView更改(是的,我已经被烧伤了...)

如果您有其他理想功能的建议,请在评论中回复。


@skaffman - 你为什么移除了iphone-ui标签? - TomSwift
3
或许是因为这个标签并没有被使用过(0个问题),因此它不会增加任何内容? - Andrew Barber
3个回答

17

回答我自己的问题。

我寻找了大量提供我需要功能的预制UIAlertView项目。我相信它们存在-我曾经看到过具有出色提示的应用程序。他们的作者可能不会分享-这很好,我理解。

所以我写了一个自己的TSAlertView。它是一个模态警告视图的从头开始实现,接口与UIAlertView兼容。在视觉外观方面,虽然它不是像素完美的副本,但非常接近。它提供的功能基本上就是我在原始问题中概述的:

  • 能够设置警报视图的显示宽度和最大高度。这使我能够在iPad上获得更漂亮的警报。

  • 即使只有两个按钮,也能够指定按钮的布局(堆叠vs并排)。 UIAlertView总是让我困扰-如果我有两个按钮,它们总是并排放置。如果按钮文本不适合,这是一个大问题。

  • 通过UITextField提示用户输入。偶尔,您只需要一种快速而简单的方法来提示用户输入某些内容。

  • 当键盘出现时,调整/重新定位行为。(提示用户输入时发生)

  • 能够使用UITextView进行滚动文本。可以明确设置此选项,而不是依赖UIAlertView为长文本换入UITextView。

  • 基本显示的近乎像素完美副本UIAlertView。

  • 支持自定义背景

  • 与UIAlertView接口兼容 - 即具有相同的功能,并且可直接替换。

在过去一年中,我使用了一些优秀的开源项目。我最喜欢的两个是MBProgressHUDMGSplitViewController,它们都托管在github上。我决定以同样的方式分享TSAlertView。

https://github.com/TomSwift/TSAlertView

这个实现肯定存在一些问题。我还没有在一个项目中使用过它,但是我正在将其用于我的当前项目,该项目将在几周内完成。如果您想自己尝试使用,请随意。在 github 上发布任何问题,或者最好提交一个修复。

享受!

以下是一些截图,展示了 1) 2个堆叠按钮 2) 输入能力 3) 显式宽度设置

显示两个堆叠按钮 显示输入能力 显示宽布局


1
嗨TomSwift,感谢你的优秀项目。在我发现你的TSAlertView之前,我正准备开始一个类似的项目。真的很酷。现在我正在我的一个应用程序中使用它。;-) - Sandro Meier
这太棒了。感谢您提供一个优秀且易于使用的开源替代品,用它来替代iOS中不必要复杂的东西。 - buildsucceeded

0

0

谢谢链接。当我扫描代码并发现这个时,我有点害怕: - (void) ResizeAlertView:(UIAlertView *)alertView { CGFloat height = view_.frame.size.height + 110; alertView.frame = CGRectMake(15.0f, (460-height)/2 ,300.0f, height); } - TomSwift
另外,我更倾向于不使用UIAlertView的衍生物。 - TomSwift
你要么建立自己的UIAlertView实现(这比定制一个更像是一场噩梦),要么只需定制一个,其难度并不像你预期的那样高。 - WrightsCS
我不同意,根据我的参数,从头编写一个警报框比以后的方式自定义UIAlertView更困难。 - TomSwift
基本上就是我说的。 - WrightsCS
我不同意世界是圆的。这并不意味着我是正确的。 - Jonathan Grynspan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接