comparison ios/dw.m @ 2738:c2387166a414

iOS: Improve the combobox. Trigger the input view when touching the combobox down arrow, instead of just setting up the custom (list) input view. If becoming first responder by some other means, switch back to the keyboard input view instead of our custom (list) based input view.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Fri, 17 Dec 2021 12:47:28 +0000
parents 74b69da35e91
children 02c53dd5e21d
comparison
equal deleted inserted replaced
2737:74b69da35e91 2738:c2387166a414
2858 /* Hides the pickerView */ 2858 /* Hides the pickerView */
2859 [self resignFirstResponder]; 2859 [self resignFirstResponder];
2860 } 2860 }
2861 -(void)showPicker:(id)sender 2861 -(void)showPicker:(id)sender
2862 { 2862 {
2863 [self resignFirstResponder];
2864
2863 pickerView = [[UIPickerView alloc] init]; 2865 pickerView = [[UIPickerView alloc] init];
2864 [pickerView setDataSource:self]; 2866 [pickerView setDataSource:self];
2865 [pickerView setDelegate:self]; 2867 [pickerView setDelegate:self];
2866 2868
2867 /* If the text field is empty show the place holder otherwise show the last selected option */ 2869 /* If the text field is empty show the place holder otherwise show the last selected option */
2868 if([[self text] length] == 0 || ![dataArray containsObject:[self text]]) 2870 if([[self text] length] == 0 || ![dataArray containsObject:[self text]])
2869 { 2871 {
2870 [pickerView selectRow:0 inComponent:0 animated:YES]; 2872 [pickerView selectRow:0 inComponent:0 animated:YES];
2871 } 2873 }
2877 } 2879 }
2878 } 2880 }
2879 2881
2880 UIToolbar* toolbar = [[UIToolbar alloc] init]; 2882 UIToolbar* toolbar = [[UIToolbar alloc] init];
2881 [toolbar setBarStyle:toolbarStyle]; 2883 [toolbar setBarStyle:toolbarStyle];
2882 [toolbar sizeToFit];
2883 2884
2884 /* Space between buttons */ 2885 /* Space between buttons */
2885 UIBarButtonItem *flexibleSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace 2886 UIBarButtonItem *flexibleSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace
2886 target:nil 2887 target:nil
2887 action:nil]; 2888 action:nil];
2897 style:UIBarButtonItemStylePlain 2898 style:UIBarButtonItemStylePlain
2898 target:self 2899 target:self
2899 action:@selector(cancelClicked:)]; 2900 action:@selector(cancelClicked:)];
2900 2901
2901 [toolbar setItems:[NSArray arrayWithObjects:cancelButton, flexibleSpace, doneButton, nil]]; 2902 [toolbar setItems:[NSArray arrayWithObjects:cancelButton, flexibleSpace, doneButton, nil]];
2902 2903 [toolbar sizeToFit];
2904
2903 /* Custom input view */ 2905 /* Custom input view */
2904 [self setInputView:pickerView]; 2906 [self setInputView:pickerView];
2905 [self setInputAccessoryView:toolbar]; 2907 [self setInputAccessoryView:toolbar];
2908 [super becomeFirstResponder];
2909 }
2910 -(BOOL)becomeFirstResponder
2911 {
2912 [self setInputView:nil];
2913 [self setInputAccessoryView:nil];
2914 return [super becomeFirstResponder];
2906 } 2915 }
2907 -(int)selectedIndex { return selectedIndex; } 2916 -(int)selectedIndex { return selectedIndex; }
2908 @end 2917 @end
2909 2918
2910 /* Subclass for a MDI type 2919 /* Subclass for a MDI type