SORU
14 Temmuz 2009, Salı


Ne kadar klavye varsa bir UİTextField yukarı taşımak için

İPhone ile SDK:

Bir klavye getiren UITextFields UIView bir ben var. Bunu yapabilmek için ihtiyacım var:

  1. UIScrollView içeriğini kaydırma diğer metin alanları görmek için izin klavye getirdi

  2. "" (Yukarı kaydırma) veya kısalması . jump otomatik olarak

UIScrollView ihtiyacım olduğunu biliyorum. UIView UIScrollView benim sınıf değiştirmeyi denedim ama hala metin kutularının veya aşağı yukarı kaydırmak için açamıyorum.

Bir UİView ve UIScrollView Bir iki ihtiyacım var mı? Bir diğeri içeri girer mi? [EDİT: ben şimdi bilmek istiyorum UIView içinde UIScrollView ve püf programlama yoluyla ayarlamak için içerik boyutu UIScrollView çerçeve boyutu UIView.]

Otomatik olarak etkin bir metin alanına kaydırma için uygulanması gereken ne var?

İdeal olarak, mümkün olduğu bileşenleri kurulumu kadar Interface Builder içinde yapılacaktır. Sadece ihtiyacı için kod yazmak istiyorum.

Not: normal olarak işlemesi için gerekli bir tabbar (UITabBar), tarafından hazırlanmıştır çalışıyorum UIView (UIScrollView).


Edit: klavye geldiğinde. sadece kaydırma çubuğunu ekliyorum Gerekli olmasa da, kullanıcı ve metin kutularının, örneğin kaydırma değiştirmek için daha iyi bir arayüz sağlar gibi hissediyorum.

Klavye yukarı ve aşağı hareket eder UIScrollView çerçeve boyutunu değiştirmek nerede çalışma var. Sadece kullanıyorum:

-(void)textFieldDidBeginEditing:(UITextField *)textField { 
    //Keyboard becomes visible
    scrollView.frame = CGRectMake(scrollView.frame.origin.x, 
                     scrollView.frame.origin.y, 
scrollView.frame.size.width,
scrollView.frame.size.height - 215   50);   //resize
}

-(void)textFieldDidEndEditing:(UITextField *)textField {
   //keyboard will hide
    scrollView.frame = CGRectMake(scrollView.frame.origin.x, 
       scrollView.frame.origin.y, 
     scrollView.frame.size.width,
      scrollView.frame.size.height   215 - 50); //resize
}

Ancak bu otomatik olarak "yukarı" ya da merkezi çok istediğim şey olan görünür bölgede alt metin alanları. hareket etmiyor

CEVAP
14 Temmuz 2009, Salı


  1. Eğer şimdi içeriği iPhone ekranında uygun mu yoksa gidin bir görünüm gerekir. Eğer sadece belirsiz klavye geldiğinde Yukarı kaydırma yapmak için kaydırma düğmesini kullanın. (eğer olursa, o zaman gerekli değil.)

  2. Klavye ile gizli olmadan TextField öğeleri göstermek için, standart bir şekilde aşağı görünümü klavye gösterildiğinde TextField öğeleri olan/yukarı taşımak için.

Burada bazı örnek kod:

#define kOFFSET_FOR_KEYBOARD 80.0

-(void)keyboardWillShow {
    // Animate the current view out of the way
    if (self.view.frame.origin.y >= 0)
    {
        [self setViewMovedUp:YES];
    }
    else if (self.view.frame.origin.y < 0)
    {
        [self setViewMovedUp:NO];
    }
}

-(void)keyboardWillHide {
    if (self.view.frame.origin.y >= 0)
    {
        [self setViewMovedUp:YES];
    }
    else if (self.view.frame.origin.y < 0)
    {
        [self setViewMovedUp:NO];
    }
}

-(void)textFieldDidBeginEditing:(UITextField *)sender
{
    if ([sender isEqual:mailTf])
    {
        //move the main view, so that the keyboard does not hide it.
        if  (self.view.frame.origin.y >= 0)
        {
            [self setViewMovedUp:YES];
        }
    }
}

//method to move the view up/down whenever the keyboard is shown/dismissed
-(void)setViewMovedUp:(BOOL)movedUp
{
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:0.3]; // if you want to slide up the view

    CGRect rect = self.view.frame;
    if (movedUp)
    {
        // 1. move the view's origin up so that the text field that will be hidden come above the keyboard 
        // 2. increase the size of the view so that the area behind the keyboard is covered up.
        rect.origin.y -= kOFFSET_FOR_KEYBOARD;
        rect.size.height  = kOFFSET_FOR_KEYBOARD;
    }
    else
    {
        // revert back to the normal state.
        rect.origin.y  = kOFFSET_FOR_KEYBOARD;
        rect.size.height -= kOFFSET_FOR_KEYBOARD;
    }
    self.view.frame = rect;

    [UIView commitAnimations];
}


- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    // register for keyboard notifications
    [[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(keyboardWillShow)
                                             name:UIKeyboardWillShowNotification
                                           object:nil];

    [[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(keyboardWillHide)
                                             name:UIKeyboardWillHideNotification
                                           object:nil];
}

- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
    // unregister for keyboard notifications while not visible.
    [[NSNotificationCenter defaultCenter] removeObserver:self
                                             name:UIKeyboardWillShowNotification
                                           object:nil];

    [[NSNotificationCenter defaultCenter] removeObserver:self
                                             name:UIKeyboardWillHideNotification
                                           object:nil];
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DavidParody

    DavidParody

    17 EKİM 2009
  • MandMEvangelists

    MandMEvangel

    28 Ocak 2008
  • MndsgnVEVO

    MndsgnVEVO

    26 Kasım 2013