2013-09-26 4 views
5

हटाने के लिए UITableViewCell स्वाइप को कैसे हटाएं IOS 7 में नया 'हटाना स्वाइप करें' देखो और महसूस करें 7 'बाउंस' प्रभाव जोड़ा गया है जहां UITableViewCell एक स्वाइप के बाद ऑफ़सेट जारी है। क्या इस बाउंस को अक्षम करने का कोई तरीका है, ताकि डिलीट बटन पूरी तरह से दिखाई देने पर सेल हार्ड स्टॉप कर सके?उछाल

सेल कि जारी है ऑफसेट करने के लिए:

मैं सेल यहाँ रोकने के लिए खींच भले ही चाहते जारी है:

enter image description here

मैं अपने cellForRowAtIndexPath: विधि में इस कोशिश की, लेकिन कुछ भी नहीं लग रहा था परिवर्तन।

for(UIView *subview in cell.subviews){ 
    if([subview isKindOfClass:[UIScrollView class]]){ 
     UIScrollView *theScrollView = (UIScrollView *)subview; 
     theScrollView.bounces = NO; 
    } 
} 
+0

आप इस काम के मिली थी? यदि आप एकीकृत मौसम ऐप देखते हैं तो यह वही काम करता है जो आप चाहते हैं, मैं देख रहा हूं कि थोड़ी देर के लिए यह कैसे करना है, अब भी कुछ भी नहीं मिला है। –

+0

@AlexSaidani - नहीं। मैं चीजों की कोशिश कर रहा हूं लेकिन अभी भी कोई समाधान नहीं है। और तुम सही हो! मुझे पता था कि मैंने इसे कहीं देखा था लेकिन मुझे याद नहीं आया। – hgwhittle

उत्तर

4

मुझे लगता है कि मुझे अंततः एक समाधान मिला! एक कस्टम सेल का उपयोग करके, आप उस सेल को UIScrollViewDelegate के रूप में सेट कर सकते हैं और scrollViewDidScroll: विधि लागू कर सकते हैं। उस विधि में, आप UIScrollView की सामग्री को किसी विशेष मान के तहत रहने के लिए मजबूर कर सकते हैं (मैं 82.0f का उपयोग कर रहा हूं क्योंकि यह सामग्री हटाता है जब 'हटाएं' बटन पूरी तरह से दिखाई देता है)। इस तरह:

@interface MyCustomCell : UITableViewCell <UIScrollViewDelegate> 

मीटर

-(void)awakeFromNib{ 
    [super awakeFromNib]; 

    for(UIView *subview in self.subviews){ 
     if([subview isKindOfClass:[UIScrollView class]]){ 
      UIScrollView *theScrollView = (UIScrollView *)subview; 
      theScrollView.delegate = self; 
     } 
    } 
} 

#pragma mark - UIScrollViewDelegate 

-(void)scrollViewDidScroll:(UIScrollView *)scrollView{ 
    static CGFloat kTargetOffset = 82.0f; 

    if(scrollView.contentOffset.x >= kTargetOffset){ 
     scrollView.contentOffset = CGPointMake(kTargetOffset, 0.0f); 
    } 
} 

यह भी बस एक UIScrollViewDelegate के रूप में एक ViewController की स्थापना और स्थापना करके एक कस्टम सेल का उपयोग किए बिना किया जा सकता है UIScrollView का प्रतिनिधि tableView:cellForRowAtIndexPath में ऐसा है:

MyViewController : UIViewController <UITableViewDataSource, UITableViewDelegate, UIScrollViewDelegate> 

मीटर

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    static NSString *cellIdentifier = @"Cell"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier]; 

    if(cell == nil) { 
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier]; 
    } 

    for(UIView *subview in cell.subviews){ 
     if([subview isKindOfClass:[UIScrollView class]]){ 
      UIScrollView *theScrollView = (UIScrollView *)subview; 
      theScrollView.delegate = self; 
     } 
    } 

    return cell; 
} 

#pragma mark - UIScrollViewDelegate 

-(void)scrollViewDidScroll:(UIScrollView *)scrollView{ 
    static CGFloat kTargetOffset = 82.0f; 

    if(scrollView.contentOffset.x >= kTargetOffset){ 
     scrollView.contentOffset = CGPointMake(kTargetOffset, 0.0f); 
    } 
} 
1

मुझे लगता है कि उस के लिए एक विकल्प है, लेकिन शायद आप क्या कर सकते उपवर्ग अपने सेल और didTransitionToState: में आप हटाने की पुष्टि राज्य पता लगा सकते हैं न।

अब इस बिंदु पर मुझे पूरी तरह से यकीन नहीं है कि स्क्रॉलिंग को रोकने के लिए आप क्या कर सकते हैं लेकिन मुझे उम्मीद है कि यह आपको सही दिशा में रखेगा।

शायद आप इस राज्य में सेल के इशारे पहचानकर्ता को अक्षम कर सकते हैं?

संबंधित मुद्दे