2017-01-13 5 views
1

테이블보기에 사용자 정의 셀이 있습니다. 셀에 텍스트 필드가 있습니다. 예를 들어, 텍스트 필드가있는 셀이 4 개인 경우를 예로들 수 있습니다. 3 개의 텍스트 필드를 탭할 수 있으며 관련 텍스트 필드가 편집을 시작했습니다. 그러나 텍스트 필드 중 하나에 대해 내가 탭할 때 - 텍스트 필드는 편집을 시작하지 않았고 호출되지 않습니다. 여기 내 방법은텍스트 필드가 사용자 정의 셀에서 편집을 시작하지 않았습니다.

-(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

을 hepls 것입니다 희망? – dirtydanee

+0

예. 다른 텍스트 필드에 바로 호출되고 있습니다 .. – Sadik

+0

델리게이트를 설정 한 곳에서 코드 조각을 보여 주시겠습니까? 또한,'UITableViewCell'을 위해'prepareForSegue'를 오버라이드 했습니까? – dirtydanee

답변

0

대리인을 설정하십시오. 처럼 :

cell.txtFld.delegate = self; 

는 당신이 대리자를 설정 한 고마워

+0

안녕하세요 Krishna, 특정 텍스트 필드에서 작동하지 않습니다. 메소드가 다른 텍스트 필드에 호출됩니다. – Sadik

+0

Ohhh. 죄송합니다. – Sanjukta

+0

@Sadik 크리슈나가 맞을 것 같습니다. 시도해 보셨습니까? –

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

안녕하세요, 사용자 정의 텍스트 필드를 가져와 텍스트 펠트의 사용자 상호 작용을 사용 중지하는 방법 – Sadik

+0

텍스트 필드를 가져올 수 있습니다. UITextfield * txtValue = (UITextfield *) [셀 viewWithTag : 태그 값]; –