Programim dhe zhvillim, javascript, python, php, html

Si duhet të shtoniObserver në nënklasën UITextField për të marrë kur tastiera është e dukshme?

Unë kam nënklasën e UITextField. Dua të di kur tastiera është e dukshme. Kjo do të më ndihmojë të lëviz të gjithë pamjen lart nëse tastiera po fsheh fushën time të tekstit.

Në nënklasën time unë shtoj vëzhgues si më poshtë:

- (id)initWithCoder:(NSCoder *)aDecoder{
    if (self = [super initWithCoder:aDecoder]) {
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardIsVisible:) name:UIKeyboardDidShowNotification object:nil];
    }
    return self;
}

Pres të kap madhësinë e tastierës:

/* Get height when keyboard is visible */
- (void)keyboardIsVisible:(NSNotification*)notification
{
    NSDictionary* keyboardInfo = [notification userInfo];
    NSValue* keyboardFrameBegin = [keyboardInfo valueForKey:UIKeyboardFrameBeginUserInfoKey];
    CGRect keyboardFrameBeginRect = [keyboardFrameBegin CGRectValue];

    _keyboardHeight =keyboardFrameBeginRect.size.height;

}

Do të përdor ivar _keyboardHeight për të vendosur nëse duhet të lëviz tastierën:

/* Move keyboard */
-(void)showKeyboardWithMove {

    CGRect screenRect = [[UIScreen mainScreen] bounds];
    ////CGFloat screenWidth = screenRect.size.width;
    CGFloat screenHeight = screenRect.size.height;


    if (self.frame.origin.y + self.frame.size.height > screenHeight - _keyboardHeight) {
        double offset = screenHeight - _keyboardHeight - self.frame.origin.y - self.frame.size.height;
        CGRect rect = CGRectMake(0, offset, self.superview.frame.size.width, self.superview.frame.size.height);

        [UIView beginAnimations:nil context:NULL];
        [UIView setAnimationDuration:0.3];

        self.superview.frame = rect;

        [UIView commitAnimations];
    }

}

Nga pikëpamja ime e klasës së kontrolluesit unë telefonoj showKeyboardWithMove:

- (void)textFieldDidBeginEditing:(MyCustomTextField *)textField
{
    // Call method for moving control when Keyboard is shown and hides it
    [textField showKeyboardWithMove];
}

- (void)textFieldDidEndEditing:(MyCustomTextField *)textField
{
    // Call method for returning control when Keyboard is hidden
    [textField hideKeyboardWithMove];
}

Problemi është se keyboardIsVisible nuk është ndezur kur shfaq tastierën për herë të parë. Kështu që unë mendoj se vëzhguesi im nuk është i koduar siç duhet. Ndonje ide?

02.10.2014


Përgjigjet:


1

Mundohuni të hiqni tuaj

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardIsVisible:) name:UIKeyboardDidShowNotification object:nil]; 

për të parëDo të shfaqet. Në rastin tim funksionon. Gjithashtu përdor

UIKeyboardWillShowNotification 

në vend të

UIKeyboardDidShowNotification
02.10.2014
  • nuk funksionon. Kur lëviz addObserverviewWillAppear, vëzhguesi nuk vendoset fare. 02.10.2014

  • 2

    Në objektivin-c

    Për të lëvizur pamjen tuaj lart, kur tastiera ishte e dukshme mund të bëhet në mënyra të shumta, shihni këtë link

    Në Swift:

    Së pari shtoni dy përkufizimet e mëposhtme në funksionin viewDidLoad():

    NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillShow:"), name: UIKeyboardWillShowNotification, object: nil)
    
    NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillHide:"), name: UIKeyboardWillHideNotification, object: nil)
    

    dhe më pas shtoni dy metodat e mëposhtme në klasën tuaj.

    func keyboardWillShow(notification: NSNotification) {    
        if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.CGRectValue() {
            self.view.frame.size.height -= keyboardSize.height
        }
    
    }
    
    func keyboardWillHide(notification: NSNotification) {
        if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.CGRectValue() {
            self.view.frame.size.height += keyboardSize.height
        }
    }
    
    16.02.2016
    Materiale të reja

    Masterclass Coroutines: Kapitulli-3: Anulimi i korutinave dhe trajtimi i përjashtimeve.
    Mirë se vini në udhëzuesin gjithëpërfshirës mbi Kotlin Coroutines! Në këtë seri artikujsh, unë do t'ju çoj në një udhëtim magjepsës, duke filluar nga bazat dhe gradualisht duke u thelluar në..

    Faketojeni derisa ta arrini me të dhënat false
    A e gjeni ndonjëherë veten duke ndërtuar një aplikacion të ri dhe keni nevojë për të dhëna testimi që duken dhe duken më realiste ose një grup i madh të dhënash për performancën e ngarkesës...

    Si të përdorni kërkesën API në Python
    Kërkesë API në GitHub për të marrë depot e përdoruesve duke përdorur Python. Në këtë artikull, unë shpjegoj procesin hap pas hapi për të trajtuar një kërkesë API për të marrë të dhëna nga..

    Një udhëzues hap pas hapi për të zotëruar React
    Në këtë artikull, do të mësoni se si të krijoni aplikacionin React, do të mësoni se si funksionon React dhe konceptet thelbësore që duhet të dini për të ndërtuar aplikacione React. Learning..

    AI dhe Psikologjia — Pjesa 2
    Në pjesën 2 të serisë sonë të AI dhe Psikologji ne diskutojmë se si makineritë mbledhin dhe përpunojnë të dhëna për të mësuar emocione dhe ndjenja të ndryshme në mendjen e njeriut, duke ndihmuar..

    Esencialet e punës ditore të kodit tim VS
    Shtesat e mia të preferuara - Git Graph 💹 Kjo shtesë është vërtet e mahnitshme, e përdor përpara se të filloj të punoj për të kontrolluar dy herë ndryshimet dhe degët më të fundit, mund të..

    Pse Python? Zbulimi i fuqisë së gjithanshme të një gjiganti programues
    Në peizazhin gjithnjë në zhvillim të gjuhëve të programimit, Python është shfaqur si një forcë dominuese. Rritja e tij meteorike nuk është rastësi. Joshja e Python qëndron në thjeshtësinë,..