UIPickerView'ı, UITextfield'ın bir FirstResponder'ı haline getirmek için klavyeyi değil, metin alanındaki değeri seçici görünümünde doldurmak istiyorum.piteview uitextfield'de nasıl gösterilmeyecek?
herhangi biri bunu biliyor mu? En kod dışarı
UIPickerView'ı, UITextfield'ın bir FirstResponder'ı haline getirmek için klavyeyi değil, metin alanındaki değeri seçici görünümünde doldurmak istiyorum.piteview uitextfield'de nasıl gösterilmeyecek?
herhangi biri bunu biliyor mu? En kod dışarı
Düzenleme: Bu cevap yazma anda doğruydu. Apple o zamandan beri inputView
'u tanıttı. Mafonya answer, bugünlerde yapmanız gereken şey.
Klavyenin açılmasını önlemek mümkündür. Sınıfınızı UITextField: textField.delegate = self
delegesi olarak ayarlayın ve arabirim bildiriminizden (başlık dosyasındaki {) önce: <UITextFieldDelegate>
ekleyin.
textFieldShouldBeginEditing:
uygulamak:
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
// Show UIPickerView
return NO;
}
Eğer pickerView bu yöntem işe yaramaz gizlemek edebilmek istiyorum. Yapabildiğiniz şey, UITextField alt sınıfını oluşturmak ve *trackingWithTouch:event:
seçicilerini geçersiz kılmak ve sihrinizi bunlara göre yapmaktır. Klavyenin görüntülenmesini önlemek için muhtemelen textFieldShouldBeginEditting:
'dan NO döndürmeniz gerekir.
Kontrol Bu pickerView istifa etmek alacak
UITextView and UIPickerView with its own UIToolbar
(TextView'un + tabbar ve pickerView + tabbar kodu hem yoktur) vb u sonra yapmanız gereken pickerView kullanmaktır beyaz bir arka plan ile, bir UILabel kullanın yerine textfield'ı kullanmanın metin görünümü
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
güncellemek için yöntem temsilci. Bu şekilde dokunduğunuzda klavye görünmeyecektir. UILabel'daki dokunma olayını geçersiz kıldığınızda, bu durum, yöntemi yeni görünümü gösterecek özel bir soru olarak adlandırır.
-(void) addToViewWithAnimation:(UIView *) theView
i klavye sadece seçici görünümü i metin alanına –
evet klavye hemen hemen her zaman görünür girdiği zaman görüntülenmesini istediğiniz olduğu göstermek istemiyoruz. uiLabel gibi başka bir görünüm kullanmanız gerekecek. cevabını daha özlü olarak düzenledim. – Bluephlame
Blue'nun bahsettiği gibi, klavye her zaman görünecek ve bundan kaçınamazsınız.Başka bir alternatif, klavyenin üstünde bir seçici görünüm eklemek olabilir. Aynı yüksekliktedir, bu yüzden klavye görülmeyecektir. – lostInTransit
Bazı kodları yapıştırdım, bu senaryoyu kapatmak için bir süre önce yazdım.
- (void)textFieldDidBeginEditing:(UITextField *)myTextField{
[myTextField resignFirstResponder];
actionSheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:nil];
[actionSheet setActionSheetStyle:UIActionSheetStyleBlackTranslucent];
CGRect pickerFrame = CGRectMake(0, 40, 0, 0);
UIPickerView *pickerView = [[UIPickerView alloc] initWithFrame:pickerFrame];
pickerView.showsSelectionIndicator = YES;
pickerView.dataSource = self;
pickerView.delegate = self;
[actionSheet addSubview:pickerView];
[pickerView release]; //NB this may result on the pickerview going black the next time you come back to the textfield, if this is the case just remove this statement
UISegmentedControl *closeButton = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObject:NSLocalizedString(@"SUBMIT", @"")]];
closeButton.momentary = YES;
closeButton.frame = CGRectMake(260, 7.0f, 50.0f, 30.0f);
closeButton.segmentedControlStyle = UISegmentedControlStyleBar;
closeButton.tintColor = [UIColor blackColor];
[closeButton addTarget:self action:@selector(dismissActionSheet:) forControlEvents:UIControlEventValueChanged];
[actionSheet addSubview:closeButton];
[closeButton release];
[actionSheet showInView:displayedInView];
[actionSheet setBounds:CGRectMake(0, 0, 320, 485)];
}
Bu actionsheet olmaksızın kodu: iki örnek bir actionsheet olmayan bir actionsheet ile ve bir bulunmaktadır http://www.buggyprogrammer.co.uk/2010/08/18/open-uipickerview-when-user-enters-textfield/
:- (void)textFieldDidBeginEditing:(UITextField *)myTextField{
[myTextField resignFirstResponder];
for (int component = 0; component < (((NSInteger)numberOfComponentsForPickerView) - 1); component++) {
NSInteger valueForRow = [[self.textField.text substringWithRange:NSMakeRange(component,1)] integerValue];
[pickerView selectRow:valueForRow inComponent:component animated:YES];
}
[self fadeInPickerView];
[view addSubview:pickerView];
[pickerView release];
}
bu bir daha ayrıntılı bir örnek bulunabilir
[textfield setInputView: pickerView] öğesini kullanın; Sistem Girişini değiştirilmesi
TextField
inputView
inputAccessoryView
Bu, ne yaptığını bilenler için doğru cevap. –
Katılıyorum, bu doğru cevap. –
Bunun hızlı uygulanmasını biliyor musunuz? – kareem
eklenti inputview Bakış.
picker = [[UIPickerView alloc]init];
[picker setDataSource:self];
[picker setDelegate:self];
[picker setShowsSelectionIndicator:YES];
MyTextField.inputView = picker;
teşekkürler! Benim için çalışıyor ama seçim yaptığımızda seçici nasıl gizlenir? Çok teşekkürler –
Benim için Çalıştı. Teşekkürler –
çözümünüz kısmen çalışır.Tüm metin alanlarında olmayan belirli belirli metin alanları üzerinde seçici görünümü göstermek ve ayrıca istenen metin alanında doldurulmuş seçici görünümden değer seçildiğinde, seçici görünümü gizlenmiş olmalıdır. –