我可以在UIAlertView按钮中使用多行文本吗?

时间:2014-07-10 07:16:58

标签: ios objective-c ios7

在我的应用程序的某一点上,用户必须从原因列表中进行选择(这是一个医疗应用程序,让一个用户检查另一个用户是否通过一张或多张照片向患者提供正确的药物和剂量)。如果照片被拒绝,则用户必须选择原因。

我们的一位客户提供了可能的原因列表,但无法更改。问题是这些原因之一是一个很长的句子,当我将它添加到alertview时,文本变得非常小而不是仅仅包装到新行。我尝试在我的字符串中添加\n,但是第二行没有显示(所以它确实有效,但我只看到视图中的第一行)。

我可以在alertview的按钮中添加多行功能吗?我知道UIButton不支持多行。我也知道UIAlertView addSubView: iOS7因{{1}}而不再有效。我宁愿不使用任何第三方库,但如果我真的不得不接受建议。增加alertview的大小也是一种选择。

2 个答案:

答案 0 :(得分:3)

根据您的要求,如果您使用UIActionSheet或Customized PopUp View,您可以更好地使用多线。

答案 1 :(得分:1)

UIAlertView和UIActionSheet真正意味着分别提供简明的反馈和简明的决策。听起来你需要一个更丰富的界面供用户进行选择。我建议您创建一个自定义UITableViewController类,其中包含一个动态单元格,它提供了一系列原因并允许选择原因。您可以动态创建不可编辑的UITextView以显示多行原因,也可以选择旁边的按钮。 UITableView的每一行都包含一个要选择的UIButton和一个用于显示原因的UITextView。在您的UIableViewController类中,您将汇集相对于上下文的所有原因,然后将它们呈现在表视图中以供选择 - 每个可能的响应一行。或者,您可以放弃按钮,只需通过UITextView显示原因。如果用户单击该行(表格单元格),您可以使用复选标记

指示响应
cell.accessoryType = UITableViewCellAccessoryCheckmark;

并捕获

中的处理选择
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath   *)indexPath 
{
    Reason *selectedReason = self.myReasonsArray[indexPath.row];
}

enter image description here

enter link description here

此外,UIAlertViews不支持子类化,并且配置功能非常有限。我建议您通过UITableViewController创建一个“自定义”模态视图来实现您的目标,该视图可用于实质上弹出一个丰富的界面,允许您执行各种各样的事情,如多行文本,图像等等。您可以通过委派在任何地方重复使用此视图。