UITextField inputView not showing on iPhone 6

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

If I use iPhone5 or iPhone5 to test my application, it works as expected: inputView and inputAccessoryView are displayed correctly. But if I switch to the iPhone 6 or Plus simulator, only inputAccessoryView is displayed at the bottom of the screen, inputView is not displayed.

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 anyone encounter such a problem? Any ideas for a solution?

PS: I already tried to clear the build directory, clean / rebuild the project, stop / restart the simulator and xcode approaches. Does not work.

+5
source share
1 answer

try to remove the simulator → hardware → keyboard → connect the hardware keyboard

+11
source

Source: https://habr.com/ru/post/1202881/


All Articles