сбой приложения при вводе UITextField

#objective-c #cocoa-touch #uitextfield

#objective-c #cocoa-touch #uitextfield

Вопрос:

Я использую это, чтобы скрыть клавиатуру при нажатии кнопки «Готово» или за пределами текстового поля:

в представлении загружалось:

 PidField.returnKeyType = UIReturnKeyDone;
PidField.delegate = self;
HesloField.returnKeyType = UIReturnKeyDone;
HesloField.delegate = self;
  

затем в программе:

 -(BOOL)textFieldShouldReturn:(UITextField *)theTextField {

    if (theTextField == PidField) {
        [PidField resignFirstResponder];
    }
    if (theTextField == HesloField) {
        [HesloField resignFirstResponder];
    }

    return YES;

}

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch *touch = [[event allTouches] anyObject];

    [PidField resignFirstResponder];
    [HesloField resignFirstResponder];

}
  

Это хороший и проверенный код, я использовал его много раз, но теперь, когда я ввожу текстовое поле, это приводит к сбою моего приложения. я не понимаю, почему или где я должен найти ошибку

Спасибо

 //
//  InfoViewController.m
//  PhotoScroller
//
//  Created by Csaba on 3/29/11.
//  Copyright 2011 __MyCompanyName__. All rights reserved.
//

#import "InfoViewController.h"


@implementation InfoViewController
@synthesize PidField8, HesloField8;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)dealloc
{
    [super dealloc];
}

- (void)didReceiveMemoryWarning
{
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];

    // Release any cached data, images, etc that aren't in use.
}

#pragma mark - View lifecycle

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
    self.view.backgroundColor = [UIColor colorWithRed:205/255.0 green:234/255.0 blue:242/255.0 alpha:1]; 

    PidField8.returnKeyType = UIReturnKeyDone;
    PidField8.delegate = self;
    HesloField8.returnKeyType = UIReturnKeyDone;
    HesloField8.delegate = self;

}


-(BOOL)textFieldShouldReturn:(UITextField *)theTextField {

    if (theTextField == PidField8) {
        [PidField8 resignFirstResponder];
    }
    if (theTextField == HesloField8) {
        [HesloField8 resignFirstResponder];
    }

    return YES;

}


- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch *touch = [[event allTouches] anyObject];

    [PidField8 resignFirstResponder];
    [HesloField8 resignFirstResponder];

}


- (void)viewDidUnload
{
    [super viewDidUnload];
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // Return YES for supported orientations
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

@end
  

Комментарии:

1. когда я закомментирую эту строку //HesloField. делегировать = self; тогда оно не падает, но и не скрывает клавиатуру

2. Запустите в режиме отладки и посмотрите, где происходит сбой и с каким сообщением. Также, пожалуйста, применяйте соглашения об именовании, такие как ivar, начинающиеся со строчных букв. Это больно читать и понимать.

3. сначала я его отлаживаю, но не могу найти, куда оно попадает. сначала я отлаживаю, а потом спрашиваю … 🙂

Ответ №1:

 - (BOOL)textFieldShouldReturn:(UITextField *)textField 
{

    [textField resignFirstResponder];
    return YES;
}
  

удалите это и попробуйте…

 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch *touch = [[event allTouches] anyObject];

    [PidField resignFirstResponder];
    [HesloField resignFirstResponder];

}
  

и в файл .h записать делегат
UITextViewDelegate

Комментарии:

1. все то же самое, это не помогает

2. сделайте одну вещь.. Скопируйте и вставьте сюда весь файл вашего класса… позвольте мне посмотреть .. вы делаете еще одну ошибку..

3. ничего плохого в .m check ur nib .. когда вы получаете сбой exatly?

4. когда я нажимаю, чтобы ввести текстовое поле

5. UITextViewDelegate или UITextFieldDelegate?