سؤال

لقد قمت بفحص جميع الاتصالات في ملف 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.

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