2015-09-04 24 views
7

Bazı yöntemleri geçersiz kıldığım bir UITextField alt sınıfım var (aşağıdaki kod). Sorun şu ki, ben yazdığımda ve metin rengin marjına ulaştığında, ne yazdığımı göstermeyecek. Hata ayıklama modunda, UIFieldEditor'un, metin dosyasının daha geniş olduğunu görüyorum. İşte UITextField metni sol tarafta kaydırmıyor

- (instancetype)init 
{ 
    self = [super init]; 
    if (self) { 
     self.edgeInsets = UIEdgeInsetsMake(7, 0, 10, 15); 
    } 
    return self; 
} 

- (id)initWithFrame:(CGRect)frame{ 
    self = [super initWithFrame:frame]; 
    if (self) { 
     self.edgeInsets = UIEdgeInsetsMake(7, 0, 10, 15); 
    } 
    return self; 
} 

-(id)initWithCoder:(NSCoder *)aDecoder{ 
    self = [super initWithCoder:aDecoder]; 
    if(self){ 
     self.edgeInsets = UIEdgeInsetsMake(7, 0, 10, 15); 
    } 
    return self; 
} 

- (CGRect)textRectForBounds:(CGRect)bounds { 
    return [super textRectForBounds:UIEdgeInsetsInsetRect(bounds, self.edgeInsets)]; 
} 

- (CGRect)editingRectForBounds:(CGRect)bounds { 
    return [super editingRectForBounds:UIEdgeInsetsInsetRect(bounds, self.edgeInsets)]; 
} 

ben bu sınıfı kullanmak kodudur: Burada

UITextFiled alt sınıf kodudur sol tarafında kapalı kaydırmak için

// alloc/init 
     _myTextField.delegate = self; 
     _myTextField.backgroundColor = [UIColor whiteColor]; 
     _myTextField.layer.masksToBounds = YES; 
     _myTextField.layer.cornerRadius = 3.0; 
     _myTextField.returnKeyType = UIReturnKeyDone; 
     _myTextField.clearButtonMode = UITextFieldViewModeWhileEditing; 
     _myTextField.autocapitalizationType = UITextAutocapitalizationTypeWords; 
     _myTextField.autocorrectionType = UITextAutocorrectionTypeNo; 
     _myTextField.hidden = YES; 

     _tfButton = [UIButton buttonWithType:UIButtonTypeSystem]; 
     [_tfButton setImage:[UIImage imageNamed:@"ic_edit"] forState:UIControlStateNormal]; 
     [self fs_addSubview:_tfButton]; 
     [_tfButton constrainWidth:22.]; 
     [_tfButton setTintColor:[UIColor greenColor]]; 
     [_tfButton constrainHeight:22.]; 
     [_tfButton constrainToRightOfView:_myTextField margin:-25.0]; 
     [_tfButton constrainEqualCenterYWithView:_myTextField offset:0.0]; 
     [_tfButton setUserInteractionEnabled:NO]; 


     UIView *leftView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 5, 5)]; 

     _myTextField.leftView = leftView; 
     _myTextField.leftViewMode = UITextFieldViewModeAlways; 

nasıl alırım metin zaman kullanıcı bu metin alanına büyük bir dize yazıyor?

cevap

2

Aynı sorunla karşı karşıyaydım, ancak herhangi bir UITextField alt sınıfım yoktu. Sorun, metin alanının metin alanı yüksekliği ile yazı tipi boyutu arasında belirli bir orana sahip olmasıdır. Yazı tipi boyutunu w.r.t metin alanı yüksekliğinin üzerine çıkarmak bu soruna neden oldu. Yaptığım şey yazı tipi boyutunu biraz azalttı ve metin alanı tekrar çalışmaya başladı.

+0

asla bu sorunu gidermek için benim manuel olarak ayarlanan yazı tipi boyutunu değiştirmeyi deneyin gerçi olurdu – user426132

-1

Biraz renklendirerek, kodunuzu çoğaltmaya çalıştıktan sonra bunları alıyorum ve bana iyi görünüyor. Beklenen davranış hakkında daha spesifik olabilir misiniz?

enter image description here

6

Kodunuz tamamen haklı. Sorun, UITextField sınıfından geldi. Hikaye tablonuza bir UITextField girdikten sonra, fontSize ve minFontSize değerini 50 olarak ayarladığınızda.

Bunun nedeni, UITextField'un dar bir alanda büyük yazı tipi çizmeyi bilmemesidir.

Yazı tipi boyutunu 7 olarak değiştirdikten sonra, altyazı metninizi (varsayılan yükseklik 30 ile) kullandım, her şey iyi çalışıyor.

+0

... İşe yaramadı . Sen bir dahisin. Teşekkür ederim! – jp36

2

Başka bir çözümüm var. Minimum yazı tipi boyutunun altında (Storyboard'da) "Sığacak şekilde ayarla" seçeneğini işaretlediyseniz, görünüşe göre çalışır. Bir şekilde, metin sağ kenar boşluğundan daha fazla yazılırsa daralır.

Ya koduyla

:

self.textField.minimumFontSize = 12; 
self.textField.adjustsFontSizeToFitWidth = YES; 
0

18 16 ila yazı tipi boyutunu azaltmak için beni düzelttim. Neden bilmiyorum ve umurumda değil: D

searchTF = [UITextField new]; 
searchTF.frame = CGRectMake(10, 10, w-140, 20); 
searchTF.backgroundColor = [UIColor redColor]; 
searchTF.font = [UIFont fontWithName:@"HelveticaNeue" size:18.0f]; 

için
searchTF.font = [UIFont fontWithName:@"HelveticaNeue" size:16.0f];