如何在UIAlertController中创建多行可编辑文本UITextview?UITextfield支持单行,我们需要在弹出窗口中创建多行文本编辑框。
UIAlertController
UITextview
UITextfield
ajsxfq5m1#
这是一个很好的方法...
func popUpController() { let alertController = UIAlertController(title: "\n\n\n\n\n\n", message: nil, preferredStyle: UIAlertController.Style.actionSheet) let margin:CGFloat = 8.0 let rect = CGRect(x: margin, y: margin, width: alertController.view.bounds.size.width - margin * 4.0, height: 100.0) let customView = UITextView(frame: rect) customView.backgroundColor = UIColor.clear customView.font = UIFont(name: "Helvetica", size: 15) // customView.backgroundColor = UIColor.greenColor() alertController.view.addSubview(customView) let somethingAction = UIAlertAction(title: "Something", style: UIAlertAction.Style.default, handler: {(alert: UIAlertAction!) in print("something") print(customView.text) }) let cancelAction = UIAlertAction(title: "Cancel", style: UIAlertAction.Style.cancel, handler: {(alert: UIAlertAction!) in print("cancel")}) alertController.addAction(somethingAction) alertController.addAction(cancelAction) self.present(alertController, animated: true, completion:{}) }
42fyovps2#
下面的代码适用于UIAlertController的多行UITextView,用Swift 4编写
UITextView
Swift 4
let alert = UIAlertController(title: "Enter your summary", message: "\n\n\n\n\n\n\n\n", preferredStyle: .alert) alert.view.autoresizesSubviews = true let textView = UITextView(frame: CGRect.zero) textView.translatesAutoresizingMaskIntoConstraints = false let leadConstraint = NSLayoutConstraint(item: alert.view, attribute: .leading, relatedBy: .equal, toItem: textView, attribute: .leading, multiplier: 1.0, constant: -8.0) let trailConstraint = NSLayoutConstraint(item: alert.view, attribute: .trailing, relatedBy: .equal, toItem: textView, attribute: .trailing, multiplier: 1.0, constant: 8.0) let topConstraint = NSLayoutConstraint(item: alert.view, attribute: .top, relatedBy: .equal, toItem: textView, attribute: .top, multiplier: 1.0, constant: -64.0) let bottomConstraint = NSLayoutConstraint(item: alert.view, attribute: .bottom, relatedBy: .equal, toItem: textView, attribute: .bottom, multiplier: 1.0, constant: 64.0) alert.view.addSubview(textView) NSLayoutConstraint.activate([leadConstraint, trailConstraint, topConstraint, bottomConstraint]) alert.addAction(UIAlertAction(title: "Done", style: .default, handler: { action in print("\(String(describing: textView.text))") })) present(alert, animated: true)
nwwlzxa73#
我对Vishal的方法做了一些调整1.添加了UITextViewDelegate方法,以将初始浅灰色文本显示为占位符,并在textViewDidBeginEditing时将其删除。1.设置textView的边框宽度、边框颜色和背景颜色,使其可见。
class ViewController: UIViewController, UITextViewDelegate { ... @IBAction func showAlert(sender: AnyObject) { let alertController = UIAlertController(title: "Hello, I'm alert! \n\n\n\n\n\n\n", message: "", preferredStyle: .Alert) let rect = CGRectMake(15, 50, 240, 150.0) let textView = UITextView(frame: rect) textView.font = UIFont(name: "Helvetica", size: 15) textView.textColor = UIColor.lightGrayColor() textView.backgroundColor = UIColor.whiteColor() textView.layer.borderColor = UIColor.lightGrayColor().CGColor textView.layer.borderWidth = 1.0 textView.text = "Enter message here" textView.delegate = self alertController.view.addSubview(textView) let cancel = UIAlertAction(title: "Cancel", style: .Cancel, handler: nil) let action = UIAlertAction(title: "Ok", style: .Default, handler: { action in let msg = (textView.textColor == UIColor.lightGrayColor()) ? "" : textView.text print(msg) }) alertController.addAction(cancel) alertController.addAction(action) self.presentViewController(alertController, animated: true, completion: {}) } func textViewDidBeginEditing(textView: UITextView) { if textView.textColor == UIColor.lightGrayColor(){ textView.text = "" textView.textColor = UIColor.darkGrayColor() } } }
nxowjjhe4#
您不能在UIAlertController中创建多行textView。您必须为此创建自己的UIAlertController。
4条答案
按热度按时间ajsxfq5m1#
这是一个很好的方法...
42fyovps2#
下面的代码适用于
UIAlertController
的多行UITextView
,用Swift 4
编写nwwlzxa73#
我对Vishal的方法做了一些调整
1.添加了UITextViewDelegate方法,以将初始浅灰色文本显示为占位符,并在textViewDidBeginEditing时将其删除。
1.设置textView的边框宽度、边框颜色和背景颜色,使其可见。
nxowjjhe4#
您不能在
UIAlertController
中创建多行textView。您必须为此创建自己的UIAlertController
。