2014-09-18 18 views
5

Ho un bug strano che si verifica solo nel simulatore iPhone 6 in Xcode 6. Ho un componente generico che estende UITextField e mostra un pickerView come inputView nella parte inferiore dello schermo.UITextField inputView non visualizzato in iPhone 6

Se utilizzo iPhone5 o iPhone5 per testare la mia applicazione, funziona come previsto: inputView e inputAccessoryView vengono visualizzati correttamente. Ma se si passa al simulatore iPhone 6 o Plus, solo inputAccessoryView viene mostrato nella parte inferiore dello schermo, inputView non viene mostrato.

Ecco il mio codice:

@interface DropDownTextField : UITextField 

@property (strong,nonatomic) UIPickerView* pickerView; 
@property (strong,nonatomic) UIToolbar *toolBar; 
@property CGFloat originalFontSize; 

@property (nonatomic) id<UIPickerViewDelegate> pickerDelegate; 
@property (nonatomic) id<UIPickerViewDataSource> pickerDataSource; 

- (CGFloat)requiredFontSize; 
- (void)setDropdownMode:(BOOL)enabled; 

@end 

@implementation DropDownTextField 

-(id)initWithCoder:(NSCoder *)aDecoder { 
    if(self = [super initWithCoder:aDecoder]) { 
     self.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter; 
     self.contentHorizontalAlignment = UIControlContentHorizontalAlignmentRight; 

     [self setFont:[UIFont mediumRegular]]; 
     _originalFontSize = self.font.pointSize; 

     self.layer.borderWidth = 1.0f; 

     CGRect frame = [self frame]; 

     // rightview dropdown arrow 
     UIImageView *dropDownImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, (frame.size.height-8)/2, 14.0f, 8.0f)]; 
     UIImage *dropDownImage = [UIImage imageNamed:@"DisclosureDown"]; 
     [dropDownImageView setImage:dropDownImage]; 
     dropDownImageView.contentMode = UIViewContentModeScaleAspectFit; 
     UIView *dropDownView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 25.0f, frame.size.height)]; 
     [dropDownView addSubview:dropDownImageView]; 

     self.rightView = dropDownView; 
     self.rightViewMode = UITextFieldViewModeAlways; 
     [self.rightView addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(becomeFirstResponder)]]; 

     // picker view 
     _pickerView = [[UIPickerView alloc] initWithFrame:CGRectMake(0,0,SCREEN_WIDTH,216)]; 
     _pickerView.showsSelectionIndicator = YES; 
     [_pickerView setBackgroundColor:[UIColor colorWithRed:245/255.0 green:245/255.0 blue:245/255.0 alpha:1.0f]]; 
     self.inputView = _pickerView; 

     // picker view toolbar 
     _toolBar= [[UIToolbar alloc] initWithFrame:CGRectMake(0,0,SCREEN_WIDTH,44)]; 
     [_toolBar setBackgroundColor:[UIColor colorWithRed:229/255.0 green:229/255.0 blue:229/255.0 alpha:1.0f]]; 
     [_toolBar setBarStyle:UIBarStyleBlackTranslucent]; 

     // to align button to the right 
     UIBarButtonItem *flex = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil]; 

     UIBarButtonItem *barButtonDone = [[UIBarButtonItem alloc] init]; 
     [barButtonDone setTarget:self]; 
     [barButtonDone setAction:@selector(changeSelectionFromLabel:)]; 
     [barButtonDone setTitle:NSLocalizedString(@"ok", @"")]; 
     [barButtonDone setTintColor:[UIColor colorWithRed:229/255.0 green:229/255.0 blue:229/255.0 alpha:1.0f]]; 
     [barButtonDone setStyle:UIBarButtonItemStylePlain]; 
     [barButtonDone setTitleTextAttributes:[UIFont pickerTitleTextAttributes] forState:UIControlStateNormal]; 

     UIBarButtonItem *barButtonCancel = [[UIBarButtonItem alloc] init]; 
     [barButtonCancel setTarget:self]; 
     [barButtonCancel setAction:@selector(dismissPickerView:)]; 
     [barButtonCancel setTitle:NSLocalizedString(@"cancel", @"")]; 
     [barButtonCancel setTintColor:[UIColor colorWithRed:229/255.0 green:229/255.0 blue:229/255.0 alpha:1.0f]]; 
     [barButtonCancel setStyle:UIBarButtonItemStylePlain]; 
     [barButtonCancel setTitleTextAttributes:[UIFont pickerTitleTextAttributes] forState:UIControlStateNormal]; 

     self.toolBar.items = [[NSArray alloc] initWithObjects:barButtonCancel,flex,barButtonDone,nil]; 
     self.inputAccessoryView = _toolBar; 


    } 
    return self; 
} 

Qualcuno venire attraverso un tale problema? Qualche idea da risolvere?

PS: ho già provato a cancellare la directory di build, pulire/ricostruire il progetto, arrestare/riavviare l'approccio di simulatore e xcode. Non funziona.

risposta

11

provare a deselezionare il simulatore -> hardware -> tastiera -> collegare la tastiera hardware

+2

quale risposta rapida e precisa! grazie :) – serdar

+0

Grazie per aver fornito questa risposta – dineshprasanna