Pregunta

Creo que no puedo desactivarlo porque no puede tener acceso mediante programación que UIBarButttonItem
(Ya sea con o viewWithTag rightBarButtonItem).

Cualquier sugerencia (abreviatura de la adición de la interfaz sin IB)?
A modo de prueba, también intentado añadir un botón de programación (a la izquierda de la barra de navegación), pero no se ha mostrado en la barra de navegación.

código relevante (En MyEditorViewControler.m):

    - (void)textFieldDidBeginEditing:(UITextField *)sender { //successfully executes when keyboard slides in

        UINavigationItem *item = self.navigationItem; //item  = 0x6420e0  OK.  (value at debugger breakpoints)
        UIBarButtonItem *doneButton4    = (UIBarButtonItem *) [self.view viewWithTag:44]; //doneButton4 = 0x0,  not OK.
        doneButton4.enabled = NO; 
    }
    - (void)textFieldDidEndEditing:(UITextField *)sender {  //successfully executes when keyboard  slides out.  
        ...
        UIButton* doneButton = (UIButton *)[self.view viewWithTag:44]; //Attempt to re-enable button.
        doneButton.enabled = YES;
    }
    - (void)viewDidLoad {   //Attempt to programmatically add a *left* button to the nav bar. Result: Button does not display in nav bar.
        .... 
        UIBarButtonItem *leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(done)];
        self.navigationItem.leftBarButtonItem = leftBarButtonItem;
        [leftBarButtonItem release];
    }

DETALLES
        Yo creo que este es un caso común, ya que el botón Hecho:
            a) es una UIBarButttonItem añadida por IB Biblioteca a la barra de navegación que se encuentra en una vista de desplazamiento que tiene algún UITextField's.
            b) se comporta como se esperaba (para guardar los datos introducidos por el usuario, etc), Francia A excepción de no conseguir desactiva cuando aparece el teclado.
            c) IB> Inspector> Barra de botones Atributos del Elemento muestra:
    Identificador = REALIZADO
    Tag = 44
    Clase = UIBarButtonItem

¿Fue útil?

Solución

Es posible escuchar una notificación (UIKeyboardWillShowNotification) registró cuando las diapositivas de teclado en:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];

A continuación, aplicar -keyboardWillShow:.

-(void)keyboardWillShow {
    UIButton *button = self.navigationItem.leftBarButtonItem;
    button.enabled = NO;
}

Para volver a activar el botón de nuevo, hacer lo mismo para el UIKeyboardDidHideNotification

Otros consejos

Sólo debe utilizar

UIBarButtonItem *doneButton = self.navigationItem.leftBarButtonItem; 
doneButton.enabled = YES;

//Both of these should work, you shouldn't need any type of IBOutlets for this

UINavigationItem *item = self.navigationItem;
UIBarButtonItem *doneButton = item.leftBarButtonItem;
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top