2016-11-10 4 views
5

मैं स्विफ्ट कोड और एक तृतीय पक्ष लाइब्रेरी (ओबीजे-सी में लिखा गया) का संयोजन कर रहा हूं। मेरे पास UISiewController है जिसमें आप UISegmentedController के साथ हैं, कि जब भी सेगमेंट को धक्का दिया जाता है या प्रत्येक बार ट्रिगर करना चाहता है तो उसी सेगमेंट को फिर से धक्का दिया गया थाUISegmentedController एक ही सेगमेंट को दोगुना करने के बाद फ्रीज करता है

मेरी स्विफ्ट कोड में, मैं निम्नलिखित है:

override func viewDidLoad() { 
     super.viewDidLoad() 
     //setup 
     items = ["newTab".localized,"topTab".localized,"categoryTab".localized] 
     carbonTabSwipeNavigation = CarbonTabSwipeNavigation(items: items as [AnyObject], delegate: self) 
     carbonTabSwipeNavigation.insertIntoRootViewController(self) 
     self.style() 
     self.view.userInteractionEnabled = true 


     carbonTabSwipeNavigation.carbonSegmentedControl!.addTarget(self, action: #selector(OverviewFolder.changesMade), forControlEvents: UIControlEvents.ValueChanged) 
    } 
func changesMade() { 
     switch carbonTabSwipeNavigation.carbonSegmentedControl!.selectedSegmentIndex { 
     case 0: 
      print("tab 1") 
     case 1: 
      print("tab 2") 
     case 2: 
      print("tab 3") 
     default: 
      print("nope") 
     } 
    } 

पुस्तकालय मैं निम्नलिखित कोड को शामिल किया है में: तो बुनियादी तौर पर

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    NSInteger current = self.selectedSegmentIndex; 
    [super touchesEnded:touches withEvent:event]; 
    if (current == self.selectedSegmentIndex) 
     [self sendActionsForControlEvents:UIControlEventValueChanged]; 
} 

मैं हर बार एक एक ValueChanged कार्यवाही प्रारंभ करना चाहते हैं उपयोगकर्ता एक सेगमेंट दबाता है (भले ही यह एक ही सेगमेंट हो)। वर्तमान में यह एक ही समय में ट्रिगर करता है जब मैं एक ही सेगमेंट दबाता हूं, लेकिन उसके बाद UISegmentController अनुत्तरदायी हो जाता है (अब सेगमेंट स्विच नहीं कर सकता)।

+0

क्या विधि यह है: '#selector (OverviewFolder.changeImageView)'? –

+0

@AlexanderDoloz क्षमा करें, यह एक प्रतिलिपि/पेस्ट त्रुटि थी, मैंने इसे बदल दिया। परिवर्तन होना चाहिए था (कोड में ठीक था) – SoundShock

उत्तर

3

क्या अंत में मेरे लिए काम किया है निम्नलिखित:

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { 
    [super touchesEnded:touches withEvent:event]; 

    [self sendActionsForControlEvents:UIControlEventTouchUpInside]; 
} 

और

carbonTabSwipeNavigation.carbonSegmentedControl!.addTarget(self, action: #selector(OverviewFolder.changesMade), forControlEvents: UIControlEvents.TouchUpInside) 
2

जब उपयोगकर्ता स्क्रीन से एक उंगली को हटा आप touchesEnded समारोह है, जो कहा जाता है का उपयोग करें और sendActions का उपयोग करना चाहिए :

ऑब्जेक्टिव-सी

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { 
[super touchesEnded:touches withEvent:event]; 

[self sendActionsForControlEvents:UIControlEventTouchUpInside]; 
} 

स्विफ्ट

override func touchesEnded(_ touches: Set<AnyHashable>, withEvent event: UIEvent) { 
super.touchesEnded(touches, withEvent: event) 
self.sendActions(for: .touchUpInside) 
} 
संबंधित मुद्दे