سؤال

وأريد أن تعديل اسم المستخدم الخاص بالمستخدم داخل UITableView. أضفت UITextField إلى UITableViewCell وهذا ما يبدو للعمل بشكل جيد جدا. ولكن عندما يلمس المستخدم الخلية (حتى خارج حيز النص)، وقال انه يتوقع أن تعديل.

وكيف يمكنني برمجيا تحديد حيز النص؟

والرمز قد تبدو شيئا مثل:

- (void)tableView:(UITableView *)tableView 
didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
userName.selected = TRUE;
}
هل كانت مفيدة؟

المحلول

- (void)tableView:(UITableView *)tableView 
didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{
   UITableViewCell *cellSelected = [tableView cellForRowAtIndexPath: indexPath];
   UITextField *textField = [[cellSelected.contentView subviews] objectAtIndex: 0];
   [textField becomeFirstResponder];

   [tableView deselectRowAtIndexPath: indexPath animated: NO];

}

وهذا يفترض أن يكون لديك أي وسيلة أسرع لمعرفة أي كائن UITextField في أي خلية، وبعد أن تعرف على وجه اليقين أن UITextField سيكون subview الأول.

وأنت أيضا قد ترغب في وضعها في الاختيار [حيز النص isFirstResponder] - لا جدوى من مما يجعلها firstResponder إذا هي عليه بالفعل. هذا قد لا يكون من الضروري بالرغم من ذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top