स्विफ्टयूआई में TextEditor में इसे कैसे करें? मैंने कीबोर्ड से रिटर्न पढ़ने के बारे में सोचा। TextField में onEditingChanged और onCommit हैं, लेकिन TextEditor में नहीं है।

नोट्स ऐप में यह स्वचालित रूप से क्रमांकित सूची का पता लगाता है, और इसमें बुलेटेड सूची जोड़ने के लिए बटन होता है।

मैं विशेष रूप से इसे खाली लाइन के बाद नंबर/बुलेट जोड़ना चाहता हूं। (अगर संभव हो तो)

enter image description here

1
MikeMaus 16 मई 2021, 18:24
यह पोस्ट उपयोगी हो सकती है stackoverflow.com/a/67503980/11419259
 – 
MikeMaus
16 मई 2021, 18:28

1 उत्तर

सबसे बढ़िया उत्तर

आप TextEditor के टेक्स्ट में onChange के साथ बदलाव देख सकते हैं। फिर। [text] newText करके, आप पुराने और नए दोनों मान प्राप्त कर सकते हैं।

  • text पिछला टेक्स्ट है
  • newText वर्तमान पाठ है

आप इनकी तुलना केवल एक बुलेट बिंदु जोड़ने के लिए कर सकते हैं जब उपयोगकर्ता वर्ण जोड़ रहा हो, उन्हें हटा नहीं रहा हो।

ध्यान दें कि मेरा कार्यान्वयन अभी तक टेक्स्ट की बड़ी श्रेणियों को चिपकाने का काम नहीं करता है।

struct ContentView: View {
    @State var text = "\u{2022} "

    var body: some View {
        TextEditor(text: $text)
            .frame(height: 400)
            .border(Color.black)
            .onChange(of: text) { [text] newText in
                if newText.suffix(1) == "\n" && newText > text {
                    self.text.append("\u{2022} ")
                }
            }
    }
}

When entering new lines, a bullet point is inserted at the start of the line

1
aheze 16 मई 2021, 18:55
धन्यवाद! हो सकता है कि आपके पास एक विचार हो, यदि बिंदु बहु-पंक्ति है तो उचित इंडेंटेशन कैसे करें, मैंने केवल कुछ " " सफेद रिक्त स्थान जोड़ने की कोशिश की है ... (लेकिन यह पसंद नहीं आया)
 – 
MikeMaus
16 मई 2021, 19:44
1
मुझे लगता है कि उस मामले में, बुलेट बिंदुओं को एक अलग दृश्य में जोड़ना सबसे अच्छा होगा (पाठ संपादक के अंदर नहीं)। हालांकि यह निश्चित रूप से अधिक जटिल होगा, शायद इसे किसी अन्य प्रश्न में पोस्ट करें?
 – 
aheze
16 मई 2021, 19:56