2017-04-18 5 views
1

setTitle: forState:メソッドを使用してボタンのタイトルを設定すると、フェードアウトとフェードイン効果があります。ボタンタイトルを設定すると、フェードオフとフェードアウトの効果があります

- (void)respondsToTextField:(UITextField *)sender { 

    if ([sender.text isEqualToString:@""]) { 


     [_cancleOrConfirmButton setTitle:@"Cancel" forState:UIControlStateNormal]; 

    }else { 

     [_cancleOrConfirmButton setTitle:@"Search" forState:UIControlStateNormal]; 

    } 

} 

解決方法を教えてください。

答えて

2

はそれを試してみてください。

- (void)respondsToTextField:(UITextField *)sender { 

    if ([sender.text isEqualToString:@""]) { 

     [UIView performWithoutAnimation:^{ 
      [_cancleOrConfirmButton setTitle:@"Cancel" forState:UIControlStateNormal]; 
      [_cancleOrConfirmButton layoutIfNeeded]; 
    }]; 

    }else { 

    [UIView performWithoutAnimation:^{ 
     [_cancleOrConfirmButton setTitle:@"Search" forState:UIControlStateNormal]; 
     [_cancleOrConfirmButton layoutIfNeeded]; 
    }]; 

    } 
} 
0

ボタンのタイトルを設定した場合、効果を望まない場合は、最初にtitleLable.textを設定できます。

これを試してみてください:

- (void)respondsToTextField:(UITextField *)sender { 

    if ([sender.text isEqualToString:@""]) { 

     _cancleOrConfirmButton.titleLabel.text = @"Cancel"; 
     [_cancleOrConfirmButton setTitle:@"Cancel" forState:UIControlStateNormal]; 

    }else { 

     _cancleOrConfirmButton.titleLabel.text = @"Search"; 
     [_cancleOrConfirmButton setTitle:@"Search" forState:UIControlStateNormal]; 

    } 

} 
0

それは私のコードで働いている、これを試してみてください:

[UIView setAnimationsEnabled:NO]; 
[_cancleOrConfirmButton setTitle:@"Cancel" forState:UIControlStateNormal]; 
[UIView setAnimationsEnabled:YES]; 
関連する問題