Obj C - подать в отставку первого респондента на ощупь UIView - PullRequest
2 голосов
/ 11 апреля 2011

Я пытаюсь заставить клавиатуру исчезнуть при прикосновении к экрану, на вопрос, на который есть ответы по всему стеку. Мне удалось заставить клавиатуру исчезнуть при нажатии клавиши ввода, благодаря потоку здесь. Мне не повезло на фоне касания отставки первого респондента. Метод вводится, у меня есть NSLog в методе, говорящий «в backgroundTouched», но клавиатура все еще там.

Я пытался сделать UIView классом UIControl, чтобы я мог использовать сенсорное событие. journalComment - это UITextView.

-(IBAction)backgroundTouched:(id)sender
    {
        [journalComment resignFirstResponder];
        NSLog(@ "in backgroundTouched");

}

Я также пытался использовать невидимую кнопку под всем, что называется методом backGroundTouched. Я думаю, может быть, я что-то упустил в конструкторе интерфейсов, но я не уверен, что.

Спасибо за любую помощь!

Вот что работает для кнопки Готово:

-(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range 
 replacementText:(NSString *)text
{
    // Any new character added is passed in as the "text" parameter
    if ([text isEqualToString:@"\n"]) {
        // Be sure to test for equality using the "isEqualToString" message
        [textView resignFirstResponder];

        // Return FALSE so that the final '\n' character doesn't get added
        return FALSE;
    }
    // For any other character return TRUE so that the text gets added to the view
    return TRUE;
}

Ответы [ 2 ]

3 голосов
/ 11 марта 2015

Я обнаружил, что следующий код лучше всего работает с моим текстовым представлением (не текстовым полем) без методов делегата:

сначала вы устанавливаете распознаватель жестов касания на свой вид:

- (void)viewDidLoad{

UITapGestureRecognizer* tapRecognizer = [[UITapGestureRecognizer alloc]
        initWithTarget:self
                action:@selector(tap:)];
    tapRecognizer.delegate = self;
    [self.view addGestureRecognizer:tapRecognizer];

}

, а затем в вашем методе крана:

- (void)tap:(id)sender
{
// use to make the view or any subview that is the first responder resign (optionally force)    
[[self view] endEditing:YES];
}

это должно позволить вашей клавиатуре быть отклоненной, когда вы где-нибудь на представлении.

Надеюсь, это поможет

1 голос
/ 12 апреля 2011

Попробуй это. У нас была эта проблема раньше, но в итоге мы нашли правильное решение.

  -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{

        [yourtextfield resignFirstResponder];

        // you can have multiple textfields here


    }

Это должно решить проблему с не исчезающей клавиатурой при нажатии на фон.

...