2012-06-26 18 views

cevap

14

UIToolBar'ı klavyenin üzerinde görüntüleyebilen ve sonra buna bir iptal düğmesi ekleyebileceğiniz bir giriş aksesuarı görünümü oluşturabilirsiniz. InputAccessoryView özelliği için aşağıdaki dokümantasyona bir göz atın.

http://developer.apple.com/library/ios/#documentation/uikit/reference/UITextField_Class/Reference/UITextField.html

Bu

bir TextView için yaptığı bir örneğidir. Create input Accessory View yöntemi "textViewDidBeginEditing" den çağrılır. Sonra giriş aksesuarı görünümünü oluşturur ve benim durumumda üç düğme ve bir boşluk çubuğu ekler.

Umarım bu yardımcı olur.

-(void)textViewDidBeginEditing:(UITextView *)textView { 

[self createInputAccessoryView]; 
[textView setInputAccessoryView:_inputAccessoryView]; 
self.myTextView = textView; } 

-(void)createInputAccessoryView { 

_inputAccessoryView = [[UIToolbar alloc] init]; 
_inputAccessoryView.barStyle = UIBarStyleBlackOpaque; 
[_inputAccessoryView sizeToFit]; 

_inputAccessoryView.frame = CGRectMake(0,_collageView.frame.size.height - 44, _collageView.frame.size.width, 44); 

UIBarButtonItem *fontItem = [[UIBarButtonItem alloc] initWithTitle:@"Font" 
                  style:UIBarButtonItemStyleBordered 
                  target:self action:@selector(changeFont:)]; 
UIBarButtonItem *removeItem = [[UIBarButtonItem alloc] initWithTitle:@"Remove" 
                  style:UIBarButtonItemStyleBordered 
                  target:self action:@selector(removeTextView:)]; 
//Use this to put space in between your toolbox buttons 
UIBarButtonItem *flexItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace 
                      target:nil 
                      action:nil]; 
UIBarButtonItem *doneItem = [[UIBarButtonItem alloc] initWithTitle:@"Done" 
                  style:UIBarButtonItemStyleDone 
                  target:self action:@selector(dismissKeyBoard:)]; 

NSArray *items = [NSArray arrayWithObjects:fontItem,removeItem,flexItem,doneItem, nil]; 
[_inputAccessoryView setItems:items animated:YES]; 
[_myTextView addSubview:_inputAccessoryView]; 
} 
+0

Bunun için teşekkürler, sadece bir iptal düğmesi yapıyor olsaydınız, 'UITextField' yanında bir' UIBarButtonItem 'iptal etmeyecek bir aksesuar görünümü olmadan aynı şeyi başardı mı? –

+0

Bunu düşünün, ben de aynısını yapacağım. Bu gerçekten iyi bir cevap olsa da ve kesinlikle sorunumu çözüyor, o zaman kabul edildi olarak işaretleyeceğim. –

+0

@kevinhorgan neden giriş özniteliğine self.myTextView öğesini atamadınız? – Camus

0

Andrew, nasıl gidiyor? bu Dima R!

Bildiğim kadarıyla, yapmaya çalıştığınız şeyi yapmanın harika bir yolu yoktur. Kolayca listelenen tiplerinde inşa birinden alabilirsiniz here

typedef enum { 
    UIReturnKeyDefault, 
    UIReturnKeyGo, 
    UIReturnKeyGoogle, 
    UIReturnKeyJoin, 
    UIReturnKeyNext, 
    UIReturnKeyRoute, 
    UIReturnKeySearch, 
    UIReturnKeySend, 
    UIReturnKeyYahoo, 
    UIReturnKeyDone, 
    UIReturnKeyEmergencyCall, 
} UIReturnKeyType; 

Eğer iptal düğmesi bulunur klavyenin üstünde bir görünümü eklemek veya görünüm hiyerarşi boyunca hareketlerini deneyin ya yapabileceğini neler ve düğmedeki istediğini bu şekilde kapla (bu yöntem güvenilmez olsa da). Ne yazık ki, bu Apple'ın henüz çok fazla kişiselleştirme sağlamadığı bir şey.

düzenleme: Aslında, ana dönüş düğmesi olarak iptal düğmesini istemediğinizden, sorunuzu başlangıçtan yanlış anladığımı düşünüyorum. Bu durumda, giriş aksesuarı görünümü kesinlikle gitmek için bir yoldur.

+1

Seni ne kadar güzel görüyorsun, seni burada görmek çok güzel ahbap. Ve cevap için teşekkürler. Evet, metin girişini iptal etmek istendiğinde kullanıcıya ilave bir iptal düğmesi vermek istiyorum. –

+1

Kevin Horgan'ın cevabı istediğin cevap, bunu başarmanın doğru yolu. – Dima

1

Sadece o zaman, Interface Builder benim görünümü denetleyicisi içine UIToolbar düştü:

@property IBOutlet UIToolbar *keyboardAccessory; 

-(void) viewWillAppear:(BOOL)animated { 
    [super viewWillAppear:animated]; 
    // this is so I can edit it in Interface Builder, but it doesn't show in the view 
    [keyboardAccessory removeFromSuperview]; 
} 

-(BOOL) textFieldShouldBeginEditing:(UITextField*)textField { 
    textField.inputAccessoryView = keyboardAccessory; 
    return YES; 
} 

-(IBAction) pressedCancelButton { 
    [self.view endEditing:YES]; 
} 

Voila!

İlgili konular