2017-01-13 4 views
1

Ich habe benutzerdefinierte Zelle auf Tabellenansicht aufgerufen. Zelle hat ein Textfeld. Zum Beispiel, wenn ich 4 Zellen mit Textfeld habe. Ich bin in der Lage, auf drei Textfelder und verwandte Textfelder zu tippen begann mit der Bearbeitung. aber für eines der Textfelder, wenn ich darauf tippe - Textfeld wurde mit der Bearbeitung begonnen wird nicht aufgerufen. Hier ist meine MethodeTextfeld begann Bearbeitung wird nicht auf benutzerdefinierte Zelle

-(void)textFieldDidBeginEditing:(UITextField *)textField{ 

      NSString *SelectedIndexString = [[NSUserDefaults standardUserDefaults] 
             stringForKey:@"SelectedIndex"]; 
     NSInteger selectionCount = [SelectedIndexString integerValue]; 
     NSLog(@"%ld",(long)selectionCount); 

      if (selectionCount) { 
       self.accountNameTxtField.enabled = NO; 
      } 
      else{ 
       self.accountNameTxtField.enabled = YES; 


      } 
    } 

// STTableViewCell 

     @interface STTableViewCell() <UITextFieldDelegate> 
     - (void)awakeFromNib { 
       [super awakeFromNib]; 
       radioBtn.alpha = 0; // Initialization code [self customBorder]; 
       // Setting the OTP label color to the RGB blue  
       self.OTPLabel.textColor = [UIColor colorWithRed:0.0 green:122.0/255.0 blue:1.0 alpha:1.0]; 
       // Set delegate to textfield 
       self.accountNameTxtField.delegate=self; 
      } 

- (void)setEditing:(BOOL)editing animated:(BOOL)animated { 

    [super setEditing:editing animated:animated]; 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(incomingNotification:) name:@"No Change" object:nil]; 

    if (!editing) 
    { 

     radioBtn.alpha = 0; 
     isTableviewEditing=NO; 
     if (![self.authURL.name isEqual:accountNameTxtField.text]) { 

      self.accountNameTxtField.text = [self.accountNameTxtField.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; 
      if (accountNameTxtField.text.length >= 1) 
      { 
      // Write out the changes. 
       descriptionBlank = NO; 

       self.authURL.name = self.accountNameTxtField.text; 
       [self.authURL saveToKeychain]; 
      } 
      else{ 
       [accountNameTxtField resignFirstResponder]; 
       [self.delegate cellDidTap:self]; 
       self.accountNameTxtField.text =self.authURL.name; 
       descriptionBlank = YES; 
      } 

     } 
     accountNameTxtField.userInteractionEnabled=NO; 
     [accountNameTxtField resignFirstResponder]; 
     for (CALayer *layer in accountNameTxtField.layer.sublayers) { 
      if ([layer.name isEqualToString:@"Gradient"]) 
      { 
       [layer setHidden:YES]; 
       break; 
      } 
     } 

     progressView.alpha=1.0; 
     OTPLabel.alpha=1.0; 

    } 
    else 
    { 
     radioBtn.alpha = 1; 
     isTableviewEditing=YES; 

     for (CALayer *layer in accountNameTxtField.layer.sublayers) { 
      if ([layer.name isEqualToString:@"Gradient"]) 
      { 
       [layer setHidden:NO]; 
       break; 
      } 
     } 

     OTPLabel.alpha=0.0; 
     progressView.alpha=0.0; 
     accountNameTxtField.userInteractionEnabled=YES; 

    } 
} 

- (void)setSelected:(BOOL)selected animated:(BOOL)animated 
{ 
    [super setSelected:selected animated:animated]; 
    if (selected) {`selectHilightCount++; 
     self.accountNameTxtField.enabled = NO; 
    } else { 
     self.accountNameTxtField.enabled = YES; 
    }` 
} 
+1

eingerichtet haben Sie den Delegaten hepls wird? – dirtydanee

+0

Ja. es wird für andere Textfelder richtig aufgerufen. – Sadik

+0

Könnten Sie bitte das Stück Code zeigen, wo Sie den Delegierten einrichten? Haben Sie auch 'prepareForSegue' für Ihre' UITableViewCell' überschrieben? – dirtydanee

Antwort

0

Bitte setzen Sie den Delegierten. Like:

cell.txtFld.delegate = self; 

Hoffe, dass es you.Thanks

+0

Hallo Krishna, es funktioniert nicht für bestimmte Textfelder. Methode wird für andere Textfelder aufgerufen. – Sadik

+0

Ohhh. Es tut mir leid – Sanjukta

+0

@Sadik Ich denke, Krishna hat recht, hast du das probiert? –

0
-(void)textFieldDidBeginEditing:(UITextField *)textField 
{ 
CustomCell *cell = (CustomCell *)[self.tableView viewWithTag:textField.tag]; 
NSIndexPath *indexPath = [self.tableView indexPathForCell:cell]; 
[email protected]("indexPath ===%ld", indexPath.row) 
// You can make logic as you want 
} 
+0

Hallo, wie bekomme ich das benutzerdefinierte Zelle Textfeld hier zu aktivieren und deaktivieren Sie die Benutzerinteraktion des Textfelds – Sadik

+0

Sie können Ihr Textfeld erhalten UITextfield * txtValue = (UITextfield *) [Zelle ViewWithTag: Ihr Tag-Wert]; –

Verwandte Themen