2012-01-16 22 views
24

UITextField s ile dinamik olarak bir tablo görünümü oluşturuyorum.Tablodaki odağı UITextField değerine ayarla

l_textField = [[UITextField alloc] initWithFrame:TextFieldFrame]; 
l_textField.tag = cellRow; 

l_textField.delegate = self; 
l_textField.font = [UIFont boldSystemFontOfSize:14]; 
l_textField.textColor = [UIColor blackColor]; 
[l_textField setEnabled:YES]; 

[cell.contentView addSubview:l_textField]; 

Ve şimdi, kullanıcı dokunmatik hücre olduğunda bu metin alanına odaklanmak istiyorum. Bu

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)newIndexPath { 
    UITextField* field = (UITextField *) [tblView viewWithTag: newIndexPath.row]; 
    [field resignFirstResponder]; 
} 

yazmak Ama bu aynı karşılaştık metin alanından

cevap

59

değişikliği [field resignFirstResponder]; çalışmıyor Burada, [field becomeFirstResponder]; doğru kullanarak bile sorun.

Ayrıca hücrede sahip olduğum nesneleri almak için etiketler kullandım. Sizin didSelectRowAtIndexPath sağ hücreyi almak için bu gibi görünmelidir: Bu benim için bir cazibe gibi çalıştı

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    currentRow = indexPath.row; 

    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 
    UITextField *indexField = (UITextField *)[cell viewWithTag:101]; 
    [indexField becomeFirstResponder]; 
} 

.

+0

Hiçbir şey happend denilen belirlediğim nedeniyle bu derste ben bunu böyle düşünmek tblView.allowsSelection = HAYIR; Ve bu olay gerçekleşmez. Ama ben tblView.allowsSelection = YES ayarlayın; Yalnızca hücre seç = ( – nabiullinas

+0

Bu tür bir yaklaşımı uygulamaya çalıştım ancak bu genellikle işe yaramaz. UITextField öğesinin [textField beFirstResponder] olarak atanması seçimi etkinleştirmeyi etkinleştirmeli veya YES/true olarak ayarlamalıdır. –

1

klavyeyi (odak) kaldırmak için kullanılır [field becomeFirstResponder];

resignFirstResponder ile

0

Swift 3

myTextField.becomeFirstResponder() 

Benim kod. Geçerli hücrenin dizin yolunu al. Ve bir sonraki indexpath.row hücresini alın. Ve ** cell1.txtFindings.becomeFirstResponder() **

if let textFieldIndexPath = specsListView.indexPath(for: cell){ 
     let newIndexPath = IndexPath(row: textFieldIndexPath.row + 1, section: 0) 

     if let cell1: SpecsTableViewCell = specsListView.cellForRow(at: newIndexPath) as? SpecsTableViewCell{ 
      cell1.txtFindings.becomeFirstResponder() 
     } 
}