Имея UIButton все еще можно выбрать, когда UITextField является первым респондентом? - PullRequest
1 голос
/ 11 июня 2011

Я пытаюсь понять, как сделать что-то, возможно, немного нестандартное. У меня есть контроллер представления (UIViewController), который имеет 1 UITextField и 3 UIButton. Я использую кнопки UIB в основном как переключатели; только 1 может быть выбран за один раз. Итак, у каждого есть:

[myButton1 addTarget:self action:@selector(buttonPushed:)
    forControlEvents:UIControlEventTouchUpInside];

И я делаю это для переключения между кнопками:

- (void) buttonPushed:(id)sender
{
    myButton1.selected = NO;
    myButton2.selected = NO;
    myButton3.selected = NO;
    if (sender == myButton1) {
        myButton1.selected = YES;
    }
    else if (sender == myButton2) {
        myButton2.selected = YES;
    }
    else if (sender == myButton3) {
        myButton3.selected = YES;
    }
}

Теперь дело в том, что я все еще хочу, чтобы кнопки можно было выбирать, даже если клавиатура текстового поля поднята (кнопки и текстовое поле видны, когда клавиатура отображается). Но поскольку текстовое поле имеет первый респондент, касания кнопок не распознаются (никогда не достигает целевого метода buttonPressed). Я не хочу, чтобы пользователь отказывался от клавиатуры, просто чтобы выбрать кнопку. Как я могу это сделать? Спасибо!

Ответы [ 3 ]

3 голосов
/ 12 июня 2011

Я понял это. 2 ответа здесь были правильными; проблема в том, что я использовал UITapGestureRecognizer в этом представлении. По какой-то причине это препятствовало достижению любых событий касания, кроме предопределенных нажатий, я полагаю. Doh.

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

1 голос
/ 11 июня 2011

У меня не было проблем с получением событий от кнопок с клавиатурой вверх. Вы уверены, что вообще не достигаете этого обработчика?

Есть ли вероятность, что myButton1 и т. Д. Не подключены?

0 голосов
/ 11 июня 2011

Я думаю, вы должны использовать сенсорные методы, такие как

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event  
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
or
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event

Я предпочитаю использовать метод TouchEnded.здесь вы проверяете, нажимает ли пользователь на uibutton, тогда делайте что хотите

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...