3 回答

TA貢獻(xiàn)1877條經(jīng)驗(yàn) 獲得超6個(gè)贊
所有“可表” UITextField
S在同一個(gè)父視圖上。 它們的“制表符順序”由Tag屬性定義。
-(BOOL)textFieldShouldReturn:(UITextField*)textField{ NSInteger nextTag = textField.tag + 1; // Try to find next responder UIResponder* nextResponder = [textField.superview viewWithTag:nextTag]; if (nextResponder) { // Found next responder, so set it. [nextResponder becomeFirstResponder]; } else { // Not found, so remove keyboard. [textField resignFirstResponder]; } return NO; // We do not want UITextField to insert line-breaks.}
SWIFT 4.0
func textFieldShouldReturn(_ textField: UITextField) -> Bool { let nextTag = textField.tag + 1 // Try to find next responder let nextResponder = textField.superview?.viewWithTag(nextTag) as UIResponder! if nextResponder != nil { // Found next responder, so set it nextResponder?.becomeFirstResponder() } else { // Not found, so remove keyboard textField.resignFirstResponder() } return false}
如果文本字段的SuperView將是UITableViewCell,那么下一個(gè)響應(yīng)程序?qū)⑹?/strong>
let nextResponder = textField.superview?.superview?.superview?.viewWithTag(nextTag) as UIResponder!

TA貢獻(xiàn)1982條經(jīng)驗(yàn) 獲得超2個(gè)贊
UITextField+Extended.h
@interface UITextField (Extended)@property(retain, nonatomic)UITextField* nextTextField;@end
UITextField+Extended.m
#import "UITextField+Extended.h"#import <objc/runtime.h>static char defaultHashKey;@implementation UITextField (Extended)- (UITextField*) nextTextField { return objc_getAssociatedObject(self, &defaultHashKey); }- (void) setNextTextField:(UITextField *)nextTextField{ objc_setAssociatedObject(self, &defaultHashKey, nextTextField, OBJC_ASSOCIATION_RETAIN_NONATOMIC); }@end
UITextField *textField1 = ...init your textfieldUITextField *textField2 = ...init your textfieldUITextField *textField3 = ... init your textfield textField1.nextTextField = textField2;textField2.nextTextField = textField3;textField3.nextTextField = nil;
- (BOOL)textFieldShouldReturn:(UITextField *)theTextField { UITextField *next = theTextField.nextTextField; if (next) { [next becomeFirstResponder]; } else { [theTextField resignFirstResponder]; } return NO; }
- 3 回答
- 0 關(guān)注
- 666 瀏覽
添加回答
舉報(bào)