Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

UITextField inputView not showing in iPhone 6

I have a weird bug which only happens in iPhone 6 simulator in Xcode 6. I have a generic component which extends UITextField and shows a pickerView as inputView at the bottom of screen.

If I use iPhone5 or iPhone5s to test my application, it's working as expected: inputView and inputAccessoryView is displaying correctly. But if I switch to iPhone 6 or Plus simulator, only inputAccessoryView is shown at bottom of screen, inputView is not showing.

Here is my code:

@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;
}

Does anybody come across such a problem? Any ideas to resolve?

PS: I've already tried clearing build directory, clean/rebuild project, stop/restart simulator and xcode approaches. Not working.

like image 409
serdar Avatar asked Sep 18 '14 13:09

serdar


1 Answers

try to uncheck simulator -> hardware -> keyboard - > connect hardware keyboard

like image 91
Nik Yekimov Avatar answered Oct 25 '22 20:10

Nik Yekimov