Frage

Ich glaube, ich kann es nicht deaktivieren kann, weil ich nicht zugreifen kann, dass UIBarButttonItem programmatisch
(Entweder mit oder viewWithTag rightBarButtonItem).

Alle Vorschläge (kurz aus der Addition der Schnittstelle ohne IB)?
Als Test habe ich versucht, auch eine Schaltfläche programmatisch hinzufügen (auf der linken Seite der Navigationsleiste), aber es hat Anzeige nicht in der Navigationsleiste.

RELEVANT CODE (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];
    }

DETAILS
        Ich würde denken, dies ist ein gemeinsamer Fall, weil das getan Taste:
            a) eine UIBarButttonItem von IB Bibliothek Navigationsleiste hinzugefügt, die in einem Scroll-Ansicht ist, dass einige UITextField's hat.
            b) verhält sich wie erwartet (um die vom Benutzer eingegebenen Daten zu speichern usw.), Frankreich Mit Ausnahme nicht deaktiviert bekommen, wenn Tastatur erscheint.
            c) IB> Inspector> Bar-Taste Elementattribute zeigt:
    Identifier = FERTIG
    Tag = 44
    Class = UIBarButtonItem

War es hilfreich?

Lösung

Sie können auf eine Benachrichtigung (UIKeyboardWillShowNotification) hören gebucht, wenn die Tastatur gleitet in:

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

implementieren Dann -keyboardWillShow:.

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

Um die Taste wieder reaktivieren, das gleiche für die UIKeyboardDidHideNotification

Andere Tipps

Sie sollten nur werden mit

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;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top