2011-07-29 3 views
5

मेरे पास एक UITextField सेट अप के लिए एक इनपुटAccessoryView है, जो आवश्यक होने पर XIB से लोड होता है (ठीक उसी तरह Apple के कीबोर्ड सहायक उदाहरण के रूप में)।मुझे अपना सिर दौर नहीं मिल सकता है - (शून्य) playInputClick;

मैं playInputClick फ़ंक्शन का उपयोग करके दबाए जाने पर क्लिक करने के लिए बटन प्राप्त करने का प्रयास कर रहा हूं लेकिन मैं कैसे काम नहीं कर सकता। Apple documentation कहता है कि मुझे दृश्य में एक प्रतिनिधि विधि जोड़ने की आवश्यकता है, लेकिन दृश्य पूरी तरह से इंटरफ़ेस बिल्डर में बनाया गया था, इसलिए मुझे नहीं पता कि मैं यह कैसे कर सकता हूं।

क्या कोई यह जानता है कि यह काम कैसे करें? ऐसा लगता है कि इंटरनेट पर कहीं भी इस विधि का कोई उदाहरण कोड नहीं है।

+0

आपको क्लास को वर्तमान में क्या है इसके उप-वर्ग के रूप में बदलने और कस्टम वर्ग – bshirley

उत्तर

-2

आपको एक व्यू कंट्रोलर क्लास को कार्यान्वित करने की आवश्यकता है, और इंटरफ़ेस बिल्डर में इस श्रेणी के रूप में फ़ाइलों के मालिक को असाइन करें। दृश्य नियंत्रक के दृश्य को अपने दृश्य में कनेक्ट करें।

एक बार ऐसा करने के बाद आप दृश्य नियंत्रक में प्रतिनिधि को कार्यान्वित कर सकते हैं। इसकी सुंदर सरल और सीधी आगे। असल में आपका विचार व्यू कंट्रोलर क्लास का सदस्य होगा।

+0

में प्रोटोकॉल को लागू करने की आवश्यकता है सेब डॉक्स से: 'इस प्रोटोकॉल को UIView के अपने कस्टम सबक्लास में कार्यान्वित करें'। तो यह गलत है, वास्तव में यह वास्तव में UIViewController subclass में लागू किया जाना है? –

+0

आप एक यूवीव से व्युत्पन्न कस्टम क्लास भी बना सकते हैं। असल में यह वही है। –

+1

ठीक है, मैंने कोशिश की है। मैंने एक कस्टम KeyboardController क्लास बनाया है जो प्रोटोकॉल और प्रतिनिधि विधि लागू करता है, inputAccessoryView कस्टम KeyboardController.view पर सेट है। जब एक बटन दबाया जाता है तब भी कोई आवाज नहीं होती है। मुझे पता है [[UIDevice currentDevice] playInputClick] विधि चल रही है क्योंकि मेरे पास इसके आगे एक NSLog कथन है जिसे मैं डीबग आउटपुट देखता हूं। यह सिर्फ इतना है कि कोई आवाज नहीं है। –

4

मुझे एक ही समस्या है और आखिरकार इसे समझ लिया गया।

यदि आप किसी UIViewController में प्रोटोकॉल को लागू करते हैं तो यह काम नहीं करता है। इसे UIView उपclass में लागू करने की आवश्यकता है।

तो इसे काम करने के लिए, मैंने एक दृश्य नियंत्रक के साथ इंटरफेस बिल्डर में एक दृश्य बनाया। फिर मैंने एक और वर्ग जोड़ा जो UIView का उप-वर्ग है। यह वर्ग UIInputViewAudioFeedback प्रोटोकॉल लागू करता है। फिर इंटरफ़ेस बिल्डर में मैं अपने दृश्य की पहचान निरीक्षक के पास गया और कक्षा को मेरे UIView सबक्लास में बदल दिया जो UIInputViewAudioFeedback प्रोटोकॉल को लागू करता है। और कुंजीपटल क्लिक ध्वनि अब काम कर रहा है।

मेरा विचार नियंत्रक अभी भी [[UIDevice currentDevice] playInputClick] बुला रहा है, सब मैंने किया था एक UIView उपवर्ग में UIInputViewAudioFeedback प्रोटोकॉल के लिए कोड के लिए कदम और मेरी UIView sublass को अपने विचार वर्ग सेट था।

+0

सबसे उपयोगी उत्तर के लिए धन्यवाद। इसलिए मूल रूप से विधि मानक विचारों पर बटन जोड़ने के लिए बेकार है। यह सब subclassed होना है। –

+0

@ यिमिनरॉन्ग लगता है कि उसने व्यू कंट्रोलर को अपने उप-वर्गीकृत के साथ बदल दिया है। – dimpiax

+0

"IInolputViewCellCellCellCellCellCellCellCellCellCellCellCellCellCellCellCellCellCellCellCellCellCellCellCellCellCellCellCellCellCellCellCellCellCellCellCellCellCellCellCell उपखंड में लागू करने के लिए मेरा अनुभव प्रदान करें। इसे UICollectionView उपclass में लागू किया जाना है। – denkeni

4

मान लें कि आप एक inputAccessoryView में यह करने के लिए कोशिश कर रहे हैं:,

.h फ़ाइल में संकेत मिलता है कि आप UIInputViewAudioFeedback

@interface YourAcessoryView : UIView <UIInputViewAudioFeedback> 

.m फ़ाइल में लागू, इस विधि को जोड़ने के प्रोटोकॉल को पूरा करने के

- (BOOL)enableInputClicksWhenVisible { 
    return YES; 
} 

जब कोई बटन दबाया जाता है, तो कुछ करें:

- (void)buttonPressed:(UIButton*)sender 
{ 
    [[UIDevice currentDevice] playInputClick]; 
    // do more stuff 
}