Domanda

Credo che non posso disattivarlo perché non può accedere che UIBarButttonItem programmazione
(Sia con viewWithTag o rightBarButtonItem).

Qualche suggerimento (brevi di aggiungere l'interfaccia senza IB)?
Come prova, ho anche provato ad aggiungere un pulsante di programmazione (a sinistra della barra di navigazione), ma non ha visualizzato nella barra di navigazione.

relativo codice (In 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];
    }

DETTAGLI
        Vorrei che questo sia un caso comune in quanto tale pulsante Done:
            a) è un UIBarButttonItem aggiunte dalla IB Biblioteca alla barra di navigazione che si trova in una vista di scorrimento che ha qualche UITextField's.
            b) si comporta come previsto (per salvare i dati inseriti dall'utente, ecc),
Tranne che per non ottenere disabilitata quando appare la tastiera.
            c) IB> Ispettore> Bar Pulsante Attributi elemento spettacoli:
    Identifier =
Done     Tag = 44
    Class = UIBarButtonItem

È stato utile?

Soluzione

È possibile ascoltare una notifica (UIKeyboardWillShowNotification) ha registrato quando le diapositive della tastiera in:

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

Quindi implementare -keyboardWillShow:.

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

Per riattivare nuovamente il pulsante, fare lo stesso per la UIKeyboardDidHideNotification

Altri suggerimenti

Si dovrebbe solo utilizzare

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;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top