Mercurial > dwindows
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 |