2015-05-19 3 views
0

У меня возникла странная проблема.Проблема при использовании навигационной панели и UITextField

У меня есть три UITextField и когда клавиатура перекрывает экран я продвигаясь вверх по экрану с помощью кода:

- (void)textFieldDidBeginEditing:(UITextField *)textField { 

    if(self.view.frame.size.height==568 && textField==txtVerifyPassword) 
{ 
    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDelegate:self]; 
    [UIView setAnimationDuration:0.5]; 
    [UIView setAnimationBeginsFromCurrentState:YES]; 
    self.view.center = CGPointMake(originalCenter.x,originalCenter.y-100); 
} 
else if(self.view.frame.size.height==568 && textField==txtPassword) 
{ 
    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDelegate:self]; 
    [UIView setAnimationDuration:0.5]; 
    [UIView setAnimationBeginsFromCurrentState:YES]; 
    self.view.center = CGPointMake(originalCenter.x,originalCenter.y-20); 
} 
} 

и я переезжаю в исходное положение с помощью:

- (void)textFieldDidEndEditing:(UITextField *)textField{ 
    self.view.center = CGPointMake(originalCenter.x,originalCenter.y); 
    } 

Оригинального центра в DidLoad :

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    originalCenter = self.view.center; 

// Do any additional setup after loading the view. 
} 

Я добавляю навигационную панель программно-так программно:

 [self.navigationController setNavigationBarHidden:NO]; 
    self.navigationItem.title = @"Demo"; 
    UIColor *bg = [UIColor colorWithRed:9/255.0f green:161/255.0f  blue:12/255.0f alpha:1.0f]; 

if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_1) { 
    // iOS 6.1 or earlier 
    self.navigationController.navigationBar.tintColor = bg; 
    self.navigationController.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName: [UIColor whiteColor]}; 

} else { 
    // iOS 7.0 or later 
    self.navigationController.navigationBar.barTintColor = bg; 
    self.navigationController.navigationBar.translucent = NO; 
    self.navigationController.navigationBar.tintColor = [UIColor whiteColor]; 
    self.navigationController.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName: [UIColor whiteColor]}; 
} 

Когда я удаляю навигацию, все отлично работает.

Но когда я добавить его я получаю две проблемы:

  1. Extra Black Space в нижней части (Просмотр не возвращается в исходное положение)
  2. Когда я пальцем вверх или вниз панель навигации, кожевенное (не знаю, почему это происходит)
+0

вам нужно добавить высоту навигационной панели. или может быть вашей навигационной панелью и просматривать перекрытия в дизайне, сначала проверьте это. –

+0

проверить это свойство контроллера навигации '@property (nonatomic, readwrite, assign) BOOL hidesBarsOnSwipe NS_AVAILABLE_IOS (8_0);' для шкурки. –

+0

@AshokLondhe Почему моя панель навигации скрывается, когда я нажимаю в любом месте на экране – Sid

ответ

2

Просто используйте TPKeyboardAvoidingScrollView, и вы готовы к работе. Его легко и просто использовать. вы можете легко достичь того, чего вы пытаетесь достичь здесь.

Использование:

Для использования с UITableViewController классов, падение TPKeyboardAvoidingTableView.m и TPKeyboardAvoidingTableView.h в свой проект, и сделать свой UITableViewTPKeyboardAvoidingTableView в XIb.

Если вы не используете xib с контроллером, я не знаю простого способа сделать свой собственный класс UITableView: путь наименьшего сопротивления - создать для него xib.

Для не - UITableViewControllers, падение исходных файлов TPKeyboardAvoidingScrollView.m и TPKeyboardAvoidingScrollView.h в свой проект, поп UIScrollView в XIb вашего взгляда контроллера, установить класс мнения, скроллинга к TPKeyboardAvoidingScrollView, и поместить все элементы управления в этой точке зрения прокрутки.

Вы также можете создать его программно, без использования xib - просто используйте TPKeyboardAvoidingScrollView в качестве своего верхнего уровня.

Смежные вопросы