2014-11-04 11 views
11

मैं (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *) का उपयोग UITextView में प्रत्येक वर्ण इनपुट पर रीयल-टाइम रेगेक्स सत्यापन करने के लिए करता हूं।सिरी डिक्टेशन UITextView बाईपास करता है: चाहिएChangeTextInRange प्रतिनिधि

यह अच्छी तरह से काम करता है और चिपका हुआ पाठ भी संभालता है जिसमें अमान्य वर्ण हो सकते हैं।

लेकिन सिरी ऐसी चीजों की परवाह नहीं कर रहा है और (void)textViewDidChange:(UITextView *)theTextView में अपने श्रुत को सीधे में डंप करता है, shouldChangeTextInRange प्रतिनिधि को छोड़कर और सत्यापन जांच से परहेज करता है।

यह मेरे लिए सुरक्षा दोष की तरह लगता है और एपीआई प्रवाह को तोड़ता है जो हर दूसरे इनपुट चैनल का पालन करता है।

shouldChangeTextInRange पर कॉल करने का अनुपालन करने के लिए मैं सिरी डिक्टेशन कैसे प्राप्त कर सकता हूं?

+3

डुनो, लेकिन ऐसा लगता है [फ़ाइल करने के लिए एक अच्छी बग] (http://bugreport.apple.com)। – rickster

+0

मैं सहमत हूं। लगता है जैसे आपको रडार दर्ज करना चाहिए। – Tander

+0

बग एप्पल को सूचित किया। चलिए देखते हैं क्या होता है। –

उत्तर

0

मुझे लगता है कि इस सवाल का जवाब .... अगर है:

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text 

तो कहा जाता है कि यह एक उपयोगकर्ता इनपुट है। तो याद रखें कि 'कन्च चेंज' की जांच की गई थी या नहीं।

तो, माइक्रोफोन इनपुट कॉल करेगा:

-(void)textViewDidChange:(UITextView *)textView 

यहाँ में अपने BOOL की जाँच करें और अगर यह नहीं है, तो यह एक माइक्रोफोन इनपुट है।

(BOOL बनाने = नहीं textViewDidChange के अंत :)

वह मेरे लिए अच्छा काम करता है पर।

+1

नीचे वोट क्यों? –

+0

समझने में कठोर, खराब शब्द, और सबसे महत्वपूर्ण, काम नहीं किया। नीचे भी मतदान किया। –

+0

यह समाधान है यदि आप UITextInput के श्रुतलेख प्रतिनिधियों में खोदना नहीं चाहते हैं – Andy