2014-03-18 1 views
4

iOS 7.1부터 글꼴 크기를 변경하고 sizeToFit을 호출하면 예상대로 작동하지 않습니다. 텍스트는 올바른 위치에 그려지지 않으며 잘릴 것입니다. UITextField이 첫 번째 응답자가되면 텍스트가 올바른 위치로 이동합니다. resignFirstResponder을 호출하면 다시 실패하게됩니다.iOS 7.1에서 글꼴을 변경 한 후 UITextField에서 sizeToFit을 호출하면 올바르게 작동하지 않습니다.

enter image description here

사람은에 대한 해결 방법이 있습니까?

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    UITextField *textField = [[UITextField alloc] init]; 
    textField.text = @"This is a test"; 
    textField.backgroundColor = [UIColor redColor]; 
    [textField sizeToFit]; // Calling this will make the second sizeToFit to fail 
    textField.font = [textField.font fontWithSize:textField.font.pointSize * 3]; 
    [textField sizeToFit]; 
    textField.center = CGPointMake(self.view.frame.size.width/2.0, self.view.frame.size.height/2.0); 
    textField.delegate = self; 

    [self.view addSubview:textField]; 
} 

- (BOOL)textFieldShouldReturn:(UITextField *)textField { 
    [textField resignFirstResponder]; 
    return YES; 
} 
+0

그것은 문제가 단지 두 번째 sizeToFit 아니라, 그 첫 번째 sizeToFit 호출 후 뷰의 크기를 조정의 수단이다. –

+0

gen-u-wine 버그를 발견 한 것 같습니다. 다행스럽게도 @matt가 지적했듯이이 솔루션은 첫 번째 sizeToFit을 사용하지 않는 것이 좋습니다. –

+0

iOS 8에서이 버그를 재현 할 수 없어서 수정되었다고 가정합니다. – matt

답변

7

해결 방법이 있습니다. 호출 sizeToFit하기 전에 텍스트 문자열을 변경하면 제대로 작동하게됩니다

textField.font = [textField.font fontWithSize:textField.font.pointSize * 3]; 
NSString *oldText = textField.text; 
textField.text = @""; 
textField.text = oldText; 
[textField sizeToFit]; 
+0

Bravo. 나는 같은 선을 따라 실험하고 있었지만, 먼저 거기에갔습니다! 아주 잘 했어. 자신의 답변을 수락하여 (며칠 후) 이것이 해결책이라는 것을 의미 할 수도 있습니다. 또한 Apple에 버그 보고서를 제출할 수 있습니까? – matt

+0

감사합니다. 나는 그 사건에 대한 버그 보고서를 제출했다. – rFlex

+0

버그 리포트의 단어는 무엇입니까? 우리는 똑같은 문제를 가지고 있었고 우리 앱의 라이브 버전은 7.1이 출시되었을 때 깨졌습니다. – SarpErdag