2010-06-30 30 views
5

içinde program aracılığıyla imleci taşıyın UiTextField davranışını ayarlamam gerekiyor, böylece bazı yıldız işaretlerini program aracılığıyla ekleyebilir ve imleci dizenin başına taşıyabilirim; Ben "yapıştır" hile (http://dev.ragfield.com/2009/09/insert-text-at-current-cursor-location.html) çalıştı, ancak imleç sonunda taşınır elde etmek denemek etkisi şu şekildedir:. SonraUiTextField


kullanıcı ekleme karakterleri f: başında ***** **** fo foo *** vs ...

bu mümkün ya da ben çaba hak etmiyorum yapmak ettik ince ayarlar var mı?

Thanx

G-

cevap

7

GÜNCELLEME:

iOS5 de

ve üzeri UITextField ve UITextView UITextInput protokolüne uygun çünkü bunu yapmak mümkündür. Lütfen buna bir göz atın: "Can I select a specific block of text in a UITextField?" bir örnek için :).

o


ESKİ CEVAP yardımcı olur umarım: (aşağıda iOS4.x ve): (ı bildiğimden değil) bu kullanarak kamu API'leri gerçekleştirmek için bir yolu yoktur

. Ben özel yöntemlerin bir çift bulduk Ancak: (en azından simülatör 4.3) kodu çalışma cezası Aşağıda

selectionRange 
setSelectionRange: 

(belki belgesiz yöntemler bunlar özel yöntemler genellikle sahip oldukları alt çizgi öneki yok çünkü) ve KVC kullanıyorum, bu yüzden can sıkıcı uyarıları önleyebilirim. Onlar Apple'ın inceleme geçecek eğer bilmiyorum, bu yana

- (void) moveToRight{ 

    NSRange selectedRange = [[self valueForKey:@"selectionRange"] rangeValue]; 
    if (selectedRange.location != NSNotFound) { 
     if (selectedRange.length > 0) { 
      selectedRange.location = NSMaxRange(selectedRange); 
      selectedRange.length = 0; 
     }else if (selectedRange.location < self.text.length) { 
      selectedRange.location += 1; 
     } 
     [self setValue:[NSValue valueWithRange:selectedRange] forKey:@"selectionRange"]; 
    } 
} 
- (void) moveToLeft{ 

    NSRange selectedRange = [[self valueForKey:@"selectionRange"] rangeValue]; 
    if (selectedRange.location != NSNotFound) { 
     if (selectedRange.length > 0) { 
      selectedRange.length = 0; 
     }else if (selectedRange.location > 0) { 
      selectedRange.location -= 1; 
     } 
     [self setValue:[NSValue valueWithRange:selectedRange] forKey:@"selectionRange"]; 
    } 
} 

, kamu API'leri olmayan kendi sorumluluğunuzdadır kullanın (selfUITextField alt sınıfının bir örneğidir).

BTW:

#import "/usr/include/objc/objc-runtime.h" 

unsigned int methodCount = 0; 
Method *mlist = class_copyMethodList([UITextField class], &methodCount); 
for (int i = 0; i < methodCount; ++i){ 
    NSLog(@"%@", NSStringFromSelector(method_getName(mlist[i]))); 
} 
+0

Çok güzel: Onları kullanarak buldum. Bunu paylaştığın için teşekkürler. – DenVog