簡體   English   中英

UIAlertController中的多行可編輯文本UITextview?

[英]Multiline editable text UITextview inside UIAlertController?

我怎樣才能讓一個多可編輯文本UITextview一個內部UIAlertController UITextfield支持單行,我們需要在彈出窗口中創建一個多行文本編輯框。

這是很好的評價......

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:{})


}

我對Vishal的方法進行了一些調整。

  1. 添加了UITextViewDelegate方法,將初始淺灰色文本顯示為占位符,並在textViewDidBeginEditing上將其刪除。
  2. 設置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() } } } 

以下代碼適用於UIAlertController Multiline 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)

您無法在UIAlertController創建多行UIAlertController 你必須為此創建自己的UIAlertController

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM