【问题标题】:Change font color of UITextView更改 UITextView 的字体颜色
【发布时间】:2011-10-31 08:09:43
【问题描述】:

我有一个 UITextView,用户可以在其中输入文本。假设用户已经输入了一个值。如何通过单击按钮将已经输入的文本和将来输入的文本的字体颜色更改为不同的字体颜色?

我已经设置了它,我可以在其中更改文本的颜色,但只有在我开始输入之前选择颜色时它才有效。在我开始打字并尝试更改颜色后,它什么也没做。

我有这个:

-(IBAction)changeInkColor:(id)sender
{
    [inkTextField setTextColor:[UIColor greenColor]]; 
    inkTextField.text=@"text";
}

只有当视图中没有文本时,它才会真正起作用并以绿色显示“文本”。但是,如果我输入一些内容然后点击此按钮,则不会发生任何事情。

【问题讨论】:

    标签: objective-c cocoa-touch


    【解决方案1】:

    我刚刚尝试过,没有任何问题。我设置了一个名为[myTextView setTextColor:[UIColor redColor]];的按钮

    在用黑色文本键入一点后,我按下了按钮,一切都变成了红色。然后我继续打字,全是红色的。

    您是否也在使用setTextColor: 来执行此操作?

    【讨论】:

    • 是的,我正在这样做:-(IBAction)changeInkColor:(id)sender { [inkTextField setTextColor:[UIColor greenColor]]; }
    • 但它什么也没做。它正在被调用
    • 如果文本视图中没有文本,它可以工作。但是,当输入文本时,按钮不执行任何操作。
    • 所以在文本视图中输入文本并单击按钮后,按钮方法不会被调用?
    • 不,它被调用,但什么也不做
    【解决方案2】:

    我和你有同样的问题,然后我意识到文本没有改变颜色,并且默认为红色,因为我正在这样做:

    placeholder = @"Welcome";
    

    而不是

     WelcomeField.text = @"Welcome";
    

    希望对你有帮助

    【讨论】:

      【解决方案3】:

      最后,setTextColor: 是答案,之前的答案缺少一个重要的细节:为了让它在 iOS 8 中工作,我必须设置颜色 =after= 我设置了文本。

      因此,

      - (void)viewDidLoad
      {
          [super viewDidLoad];
      
          _myTextView.textColor = [UIColor whiteColor];
          _myTextView.text   = @"yadda yadda yadda...";
      
          // etc., snip
      

      没有工作,而

      - (void)viewDidLoad
      {
          [super viewDidLoad];
      
          _myTextView.text   = @"yadda yadda yadda...";
          _myTextView.textColor = [UIColor whiteColor];
      
          // etc., snip
      

      确实工作。这让我觉得是 iOS 8 中的一个错误,我会写出来。

      【讨论】:

      • 仅供参考,这仍然是解决方案。它解决了我的问题。如果我在 textColor 之前设置文本,则文本保持黑色。如果我在文本之后设置颜色,它可以正常工作。
      • @matcartmill,您的评论中有错字。您的第三句和第四句描述了相同的场景,但结果不同。在 textColor (2) 之前设置文本 (1) --> 文本为黑色。设置文本(1),然后设置颜色(2)->它工作正常。你的最后一句话是正确的。
      • 应该是公认的答案。 在文本修复我的问题后设置文本颜色
      【解决方案4】:

      您可以通过切换 textColor 按钮(行中的第 6 个按钮)在 IB 中解决此问题(至少在 Xcode 8.2 中)。选择此按钮后,如果在视图中输入文本之前以编程方式设置 textColor,则颜色将“粘住”。我还没有找到一种优雅的方式来以编程方式在文本视图上设置它。

      但是你也可以在代码中解决这个问题:

      textView.text = @" ";
      textView.textColor = UIColor.redColor;
      textView.text = @"";
      

      【讨论】:

        【解决方案5】:

        使用 UITextField 的属性文本

        NSAttributedString *string = [[NSAttributedString alloc]initWithString:self.textField.text attributes:@{NSForegroundColorAttributeName:color}];
        self.textField.attributedText = string;
        

        【讨论】:

          【解决方案6】:

          非常有趣,而

          [_nameLabel setTextColor: [UIColor redColor]];
          

          没用,

          _nameLabel.textColor = [UIColor redColor]];
          

          工作。希望对其他人有所帮助。干杯。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2012-05-13
            • 1970-01-01
            • 2013-11-14
            • 2014-01-19
            • 2015-01-02
            • 2014-05-03
            • 1970-01-01
            相关资源
            最近更新 更多