我正在使用TableView
中的自定義單元格。我的Tableview有5行,我正在重複使用單元格5次,單元格有Textfield
。我需要瀏覽tableview中的文本框並按下鍵盤上的下一個按鈕。 請幫幫我。在UITableView中導航文本字段
在此先感謝。
我正在使用TableView
中的自定義單元格。我的Tableview有5行,我正在重複使用單元格5次,單元格有Textfield
。我需要瀏覽tableview中的文本框並按下鍵盤上的下一個按鈕。 請幫幫我。在UITableView中導航文本字段
在此先感謝。
通常textFieldShouldReturn
方法用於此目的。下面是一個示例。您需要修改它以在您的代碼中使用。在你打算寫這個方法的類,這個類的對象必須爲那些文本框
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
if (textField == <textField1>) {
[<textField2> becomeFirstResponder];
}
else if (textField == <textField2>) {
[<textField3> becomeFirstResponder];
}
else {
}
return YES;
}
使用此方法時ü年底編輯文本字段,以便檢查特定的文本框和navigate-(無效)設置爲delegate
textFieldDidEndEditing:(*的UITextField)文本框
而且在返回您可以導航 文本字段 - (BOOL)textFieldShouldReturn:(*的UITextField)文本框
首先將視圖場景的類更改爲故事板中的視圖控制器。
首先讓您的自定義單元格的標識符爲cell
(在我的情況下)。
把文本字段和設置標記101
(在我的情況)。
繼承UITextFieldDelegate和鍵盤工具欄值是這樣的:
@interface TableViewController() <UITextFieldDelegate>
@property (nonatomic, strong) UITextField* textField1;
@property (nonatomic, strong) UITextField* textField2;
@property (nonatomic, strong) UITextField* lastTextField;
@property (nonatomic, copy) NSString* string1;
@property (nonatomic, copy) NSString* string2;
@property (nonatomic, strong) UIToolbar* keyboardToolbar;
@end
在下面viewDidLoad
方法寫代碼:
- (void)viewDidLoad {
[super viewDidLoad];
//
self.keyboardToolbar = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, 320, 50)];
self.keyboardToolbar.barStyle = UIBarStyleBlackTranslucent;
self.keyboardToolbar.items = @[[[UIBarButtonItem alloc]initWithTitle:@"Cancel"
style:UIBarButtonItemStylePlain
target:self
action:@selector(cancelNumberPad:)],
[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace
target:nil
action:nil],
[[UIBarButtonItem alloc]initWithTitle:@"Apply" style:UIBarButtonItemStyleDone
target:self
action:@selector(doneWithNumberPad:)]];
[self.keyboardToolbar sizeToFit];
}
和實施這些方法:
-(void)cancelNumberPad:(id)sender {
[self.lastTextField resignFirstResponder];
}
-(void)doneWithNumberPad:(id)sender {
if(self.lastTextField == self.textField1) {
[self.textField2 becomeFirstResponder];
} else {
[self.lastTextField resignFirstResponder];
}
}
和寫入單元初始化代碼:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath];
UITextField* textField = [cell viewWithTag:101];
textField.inputAccessoryView = self.keyboardToolbar;
textField.delegate = self;
if(0 == indexPath.section && 0 == indexPath.row) {
self.textField1 = textField;
} else if(0 == indexPath.section && 1 == indexPath.row) {
self.textField2 = textField;
}
return cell;
}
現在我們已經實現UITextFieldDelegate方法:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if(textField == self.textField1) {
self.string1 = [self.string1 stringByReplacingCharactersInRange:range withString:string];
} else if(textField == self.textField2) {
self.string2 = [self.string2 stringByReplacingCharactersInRange:range withString:string];
}
return YES;
}
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
self.lastTextField = textField;
}
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
[self doneWithNumberPad:nil];
return YES;
}
你真正想要當你按下一個按鈕做什麼樣的行動? –
我需要轉到下一個按鈕 – Naveen
按下tableview中的下一個文本框,爲單元格中的每個uitextfield賦予標籤。與下一個按鈕按下使其他文本域成爲FirstResponder – vaibby