2010-10-28 20 views
6

पर UITextView के माध्यम से चयन करना मेरे पास एक छवि और UITextView संपत्ति के साथ एक कस्टम UITableViewCell है। टेक्स्टव्यू सेल के किनारे तक फैलता है। मेरी समस्या टेक्स्टव्यू टैप कर रही है, didSelectRowAtIndexPath में पंजीकृत नहीं है।आईओएस: कस्टम UITableViewCell

मैं इसे कैसे बना सकता हूं ताकि मैं अपने टेक्स्टव्यू "क्लिक" कर सकूं?

उत्तर

6

यदि आपको संपादन योग्य होने की आवश्यकता नहीं है, तो बस अपना टेक्स्ट व्यू enabled संपत्ति को NO पर सेट करें।

+4

userInteractionEnabled = कोई काम नहीं किया। बहुत बहुत धन्यवाद। –

+0

एक टेक्स्ट व्यू में सक्षम संपत्ति नहीं है। –

3

आप अपने यूआईटीएक्स्टव्यू में एक प्रतिनिधि को असाइन कर सकते हैं, और इसके टेक्स्टव्यूशल्डबेजिन एडिटिंग: विधि में, आप मैन्युअल रूप से didSelectRowAtIndexPath विधि को कॉल कर सकते हैं। यदि आप आसानी से चयन करने के लिए अनुक्रमणिका के इंडेक्सपैथ को प्राप्त नहीं कर सकते हैं, तो आप UITextView के उप-वर्ग का उपयोग कर सकते हैं जिसमें इंडेक्सपाथ प्रॉपर्टी है, और सेलफॉररोएट इंडेक्सपैथ: विधि, जब आप अपना यूआईटीएक्स्टव्यू बनाते हैं, तो इंडेक्सपाथ प्रॉपर्टी सेट करें।

+0

आप selectRowAtIndexPath भी कॉल कर सकते हैं: एनिमेटेड: यदि आप उस व्यवहार की इच्छा रखते हैं तो तालिका कक्ष पर हाइलाइट एनीमेशन प्राप्त करने के लिए यहां स्क्रॉलपोजिशन करें। – Rudism

5

UITextViewtextView.userInteractionEnabled = false सेट करें और यदि आपके पास UITextField है, तो textField.userInteractionEnabled = false सेट करें।

आप, के बाद इसके साथ सेल उपयोग किया जाता है TextView या पाठ फ़ील्ड संपादन योग्य होना चाहता हूँ कुछ इस तरह करते हैं:

func textFieldDidEndEditing(textField: UITextField) { 
    textField.userInteractionEnabled = false 
    // rest of the function 
    } 

    func textViewDidEndEditing(textView: UITextView) { 
    textView.userInteractionEnabled = false 
    // rest of the function 
    } 
:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    tableView.deselectRowAtIndexPath(indexPath, animated: true) 

    let cell = tableView.cellForRowAtIndexPath(indexPath)! as UITableViewCell 

    // find first textField inside this cell and select it 
    for case let textField as UITextField in cell.subviews { 
    textField.userInteractionEnabled = true 
    textField.becomeFirstResponder() 
    return 
    } 

    // find first textView inside this cell and select it 
    for case let textView as UITextView in cell.subviews { 
    textView.userInteractionEnabled = true 
    textView.becomeFirstResponder() 
    return 
    } 
} 

तो उपयोगकर्ता बातचीत निष्क्रिय करने के लिए संपादन समाप्त कर लेने के बाद यह सुनिश्चित कर लें

मत भूलना UITextFieldDelegate और/या UITextViewDelegate

मुझे आशा है कि इस मदद की किसी को :)

01 सेट करने के लिए
+1

मैं अपनी 'UITextView' की' संपादन योग्य 'प्रॉपर्टी को 'NO' पर सेट कर रहा था, जो काम नहीं करता था। 'UserInteractionEnabled' को 'NO' पर सेट करना। –

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