2015-12-22 14 views
5

मैं UIAlertController के अंदर एक मल्टीलाइन संपादन योग्य टेक्स्ट UITextview कैसे बना सकता हूं? UITextfield एक लाइन का समर्थन करता है और हमें पॉप अप विंडो में एक मल्टीलाइन टेक्स्ट एडिट बॉक्स बनाने की आवश्यकता है।मल्टीलाइन संपादन योग्य टेक्स्ट UITextview?

उत्तर

8

यह अच्छा appraoch है ...

func popUpController() 
{ 

    let alertController = UIAlertController(title: "\n\n\n\n\n\n", message: nil, preferredStyle: UIAlertControllerStyle.ActionSheet) 

    let margin:CGFloat = 8.0 
    let rect = CGRectMake(margin, margin, alertController.view.bounds.size.width - margin * 4.0, 100.0) 
    let customView = UITextView(frame: rect) 

    customView.backgroundColor = UIColor.clearColor() 
    customView.font = UIFont(name: "Helvetica", size: 15) 



    // customView.backgroundColor = UIColor.greenColor() 
    alertController.view.addSubview(customView) 

    let somethingAction = UIAlertAction(title: "Something", style: UIAlertActionStyle.Default, handler: {(alert: UIAlertAction!) in print("something") 

     print(customView.text) 

    }) 

    let cancelAction = UIAlertAction(title: "Cancel", style: UIAlertActionStyle.Cancel, handler: {(alert: UIAlertAction!) in print("cancel")}) 

    alertController.addAction(somethingAction) 
    alertController.addAction(cancelAction) 

    self.presentViewController(alertController, animated: true, completion:{}) 


} 
+3

मैंने इस पर कुछ शोध किया था। ऐसा लगता है कि यूआईएलर्ट कंट्रोलर का आंतरिक कार्यान्वयन बदल गया है (मैं आईओएस 9 पर काम कर रहा हूं) और यह काम नहीं करेगा। सिर्फ आपकी जानकारी के लिए। –

0

आप UIAlertController में बहु-लाइन टेक्स्ट व्यू नहीं बना सकते हैं। इसके लिए आपको अपना खुद का UIAlertController बनाना होगा।

+0

धन्यवाद यह अच्छा दृष्टिकोण मेरे स्वयं के कस्टम बनाने के लिए है, पिछले पर मैं अपने जवाब में नीचे की तरह इसे बनाने के लिए है। बहुत बहुत धन्यवाद मुझे एक अच्छा लिंक दे। – Vishal

2

मैं विशाल के दृष्टिकोण के लिए कुछ सुधार किया।

  1. प्लेसहोल्डर के रूप में प्रारंभिक हल्के भूरे रंग के पाठ को प्रदर्शित करने के लिए UITextViewDelegate विधि जोड़ा गया और इसे TextViewDidBeginEditing पर हटा दें।
  2. इसे दृश्यमान बनाने के लिए टेक्स्ट दृश्य सीमा चौड़ाई, सीमा रंग और पृष्ठभूमि रंग सेट करें।

    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() 
        } 
    } 
    } 
    
+0

आपको बहुत बहुत धन्यवाद। यह वही है जैसा मैं चाहता था। लेकिन संपादन शुरू होने पर यह ऊपर नहीं जाता है। क्या आपके पास इसका समाधान है। –

संबंधित मुद्दे