किसी को भी इस के साथ मेरी मदद कर सकते हैं: मैं इनपुट संख्या के लिए UITextField
को लागू करने की जरूरत है। यह संख्या हमेशा 4 स्थानों के साथ दशमलव प्रारूप में होना चाहिए उदा। 12.3456 या 12.3400। इसलिए मैंने NSNumberFormatter
बनाया जो मुझे दशमलव स्थानों के साथ मदद करता है।अपने मूल्य निर्धारित करने के बाद UITextField में कर्सर ले जाने के लिए कैसे
मैं
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
विधि में UITextField
मान सेट कर रहा हूँ। मैं इनपुट इनपुट करता हूं, फॉर्मेटर का उपयोग करता हूं और अंत में [textField setText: myFormattedValue];
यह ठीक काम करता है लेकिन यह कॉल कर्सर को मेरे क्षेत्र के अंत में भी ले जाती है। वह अवांछित है। जैसे मेरे पास मेरे क्षेत्र में 12.3400 है और कर्सर बहुत शुरुआत और उपयोगकर्ता प्रकार संख्या 1 पर स्थित है। परिणाम मान 112.3400 है लेकिन कर्सर अंत में स्थानांतरित हो गया है। जब उपयोगकर्ता अपेक्षा करता है तो मैं कर्सर के साथ समाप्त करना चाहता हूं (केवल हाल ही में जोड़े गए नंबर 1 के बाद)। कर्सर को TextView
में सेट करने के बारे में कुछ विषय हैं लेकिन यह UITextField
है। मैं भी क्षेत्र है, जो कर्सर की स्थिति को ठीक से बचाता है की selectedTextRange
पकड़ने की कोशिश की लेकिन बाद setText
विधि कॉल, यह स्वचालित रूप से बदलता है और मूल UITextRange
खो (वर्तमान के लिए बदल) कर रहा है। आशा है, मेरी व्याख्या स्पष्ट है।
कृपया, इसके साथ मेरी सहायता करें। आपका बहुत बहुत धन्यवाद।
EDIT: अंत में, मैंने पूर्ण संपादन के बाद प्रारूप को बदलने के लिए कार्यक्षमता को स्विच करने का निर्णय लिया और पर्याप्त काम करता है। मैंने इसे एक चयनकर्ता forControlEvents:UIControlEventEditingDidEnd
जोड़कर किया है।
जब आप 'selectedTextRange' पढ़ा, तो आप इसे कक्षा में एक संपत्ति है कि के रूप में' UITextFieldDelegate' में कार्य करता है के रूप में कॉपी नहीं कर सकते और फिर पुनः सेट: मेरे लिए orked बहुत ही सरल है, बस का इस्तेमाल किया प्रेषण मुख्य async था यह 'setText:' के बाद है? –
फिलिप, यह काम नहीं करता है।सेटटेक्स्ट के साथ टेक्स्ट सेट करने के बाद, टेक्स्ट सेट करने से पहले आपके द्वारा एकत्र किए गए UITextRange को शून्य पर रीसेट कर दिया जाता है, और इसलिए आप इसे बाद में समाप्त UITextField पर पुन: लागू नहीं कर सकते हैं। – JasonD