iphone - UIButton को प्रोग्रामेटिक रूप से नकली ईवेंट कैसे करें?




touch-event (4)

मैं कुछ यूनिट परीक्षण लिख रहा हूं और, इस विशेष ऐप की प्रकृति के कारण, यह महत्वपूर्ण है कि मैं UI श्रृंखला जितना संभव हो उतना ऊंचा हो। तो, मैं क्या करना चाहता हूं प्रोग्रामेटिक रूप से एक बटन-प्रेस ट्रिगर करता है, जैसे कि उपयोगकर्ता ने GUI में बटन दबाया था।

(हां, हाँ - मैं सिर्फ IBAction चयनकर्ता को कॉल कर सकता हूं लेकिन, फिर से, इस विशेष ऐप की प्रकृति ने यह महत्वपूर्ण बना दिया है कि मैं वास्तविक बटन दबाता हूं, जैसे कि IBAction को बटन से ही बुलाया जा सकता है।)

ऐसा करने का पसंदीदा तरीका क्या है?


Xamarin आईओएस के लिए

btnObj.SendActionForControlEvents(UIControlEvent.TouchUpInside);

Reference


इस मामले में, UIButton UIControl से लिया गया है। यह UIControl से व्युत्पन्न वस्तु के लिए काम करता है।

मैं विशिष्ट उपयोग मामले पर " UIBarButtonItem " कार्रवाई का पुन: उपयोग करना चाहता था। यहां, UIBarButtonItem विधि sendActionsForControlEvents: प्रदान नहीं करता है sendActionsForControlEvents:

लेकिन सौभाग्य से, UIBarButtonItem में लक्ष्य और क्रिया के लिए गुण हैं।

 if(notHappy){        
         SEL exit = self.navigationItem.rightBarButtonItem.action;
         id  world = self.navigationItem.rightBarButtonItem.target;
         [world performSelector:exit];
 }

यहां, rightBarButtonItem प्रकार UIBarButtonItem


यदि आप इस तरह के परीक्षण करना चाहते हैं, तो आप आईओएस 4 में यूआई ऑटोमेशन समर्थन से प्यार करेंगे। आप बटन प्रेस, इत्यादि को अनुकरण करने के लिए जावास्क्रिप्ट लिख सकते हैं, हालांकि दस्तावेज़ीकरण (विशेष रूप से प्रारंभ करने वाला भाग) थोड़ा सा है विरल।


स्विफ्ट 3:

self.btn.sendActions(for: .touchUpInside)




touch-event