2012-05-23 24 views
10

मैं UIScrollView व्यवहार की नकल करना चाहता हूं जहां वर्तमान थ्रेड RunLoop मोड UITrackingRunLoopMode में बदलता है जब आप scrollView खींचते हैं, और वापस खींचते समय NSDefaultRunLoopMode पर वापस जाते हैं।जब तक मैं इसे रोकने का फैसला नहीं करता तब तक एक निश्चित मोड में चलाने के लिए वर्तमान थ्रेड NSRunLoop को सेट करने का सही तरीका क्या है?

मैं अपने वर्ग के साथ यह करने के लिए हालांकि, विचारों के आसपास खींचकर चाहते हैं ... अभी मैं जब मैं, खींच बंद _draggingView परिवर्तन करने के लिए नहीं के बराबर तो मैं पाशन बंद इस कोड

while (_draggingView && [[NSRunLoop currentRunLoop] runMode:UITrackingRunLoopMode beforeDate:[NSDate distantFuture]]); 

उपयोग कर रहा हूँ उस मोड में। क्या ऐसा करने का एक और अधिक सुरुचिपूर्ण/बेहतर तरीका है?

UIScrollView यह कैसे कर रहा है? इनपुट स्रोत?

धन्यवाद

+0

मुझे डर है कि कुछ निजी एपीआई के बिना रन लूप मोड को बदलना संभव नहीं है। क्या आप और अधिक विस्तारित कर सकते हैं कि आप क्या करने की कोशिश कर रहे हैं? – sergio

+0

आप रनलोप के मोड को क्यों बदलना चाहते हैं? क्या कोई वास्तविक समस्या है या आप रनलोप के बारे में और जानना चाहते हैं? – Tushar

उत्तर

3

आप एक रन लूप को वापस करने के लिए मजबूर करने के लिए CFRunLoopStop का उपयोग कर सकते हैं।

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { 
    [super touchesEnded:touches withEvent:event]; 
    CFRunLoopStop(CFRunLoopGetMain()); 
} 
+1

मैं रन लूप को रोकना नहीं चाहता हूं। मैं बस मोड बदलना चाहता हूँ। – LocoMike

+0

आप मोड को बदल नहीं सकते हैं। आप इसे एक मोड में चलाते हैं। जब आप किसी भिन्न मोड में चलाना चाहते हैं, तो आप वर्तमान रन को रोकते हैं और नए मोड में फिर से शुरू करते हैं (या बस वापस लौटें और 'CFRunLoopRun' फिर से शुरू करने के बाहरी आवेषण को छोड़ दें)। –

-1

आप गिरावट तरीकों का उपयोग कर सकते हैं।

- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView 

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView 

स्क्रॉल दृश्य खींचने के बाद, यह कम हो जाता है, इसलिए, ये विधियां आपके लिए उपयोग की जा सकती हैं।

+0

नहीं, इसका कोई उपयोग नहीं है। मेरे पास कोई UISCrollView नहीं है, मैं बस जब भी चाहूं UITrackingRunLoopMode में काम करने के लिए मुख्य थ्रेड के NSRunLoop को बदलना चाहता हूं (बस जब आप खींचते हैं तो UIScrollView करता है)। लेकिन फिर भी धन्यवाद। – LocoMike

+0

मैंने सोचा कि यह गलत है मुझे लगता है, मुझे लगता है ..! –