uitextfield resignfirstresponder لا يعمل؟
-
27-09-2019 - |
سؤال
لقد قمت بفحص جميع الاتصالات في ملف NIB. رمز بلدي -
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
self.view.backgroundColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"iphone_bg_login.png"]];
self.title = @"Login screen";
loginTxt = [[UITextField alloc] init];
pwdText = [[UITextField alloc] init];
loginFailedTxt = [[UILabel alloc] init];
loginBtn = [[UIButton alloc] init];
navAppDelegate = (NavAppDelegate *)[[UIApplication sharedApplication] delegate];
navAppDelegate.navController.navigationBarHidden = YES;
//NSArray *subVs = (NSArray *) [self.view subviews];
[super viewDidLoad];
}
لقد استخدمت فئة فرعية من UIView (UIControl)
وأضاف جميع عناصر واجهة المستخدم إليها في منشئ الواجهة. UIControl's touchDown
الطريقة متصلة بـ backgroundTap
طريقة.
-(IBAction) backgroundTap:(id) sender {
[loginTxt resignFirstResponder];
[pwdText resignFirstResponder];
//[[UIApplication sharedApplication] becomeFirstResponder];
//[sender resignFirstResponder];
}
لذلك لم تتم إزالة لوحة المفاتيح كما هو من المفترض. غير متأكد من السبب.
شكرا للمساعدة! تيجا.
المحلول
لقد أشار DyingCactus إلى خطأك. أنت تحل محل نسق NIB لعنصر التحكم بعنصر تحكم مختلف تمامًا ، وتفقد مؤشرك إلى الشخص الموجود في NIB. عندما تتصل resignFirstResponder
, ، أنت تسميها على كائنك المكررة ، وليس الكائن الموجود بالفعل على الشاشة. تخلص من alloc
و init
يدعو إلى أشياء سلكية في NIB.
لا تنتمي إلى StackOverflow