在 UITapGestureRecognizer 中更改字体

Posted

技术标签:

【中文标题】在 UITapGestureRecognizer 中更改字体【英文标题】:change font in UITapGestureRecognizer 【发布时间】:2015-09-28 11:41:33 【问题描述】:

我有一个UIView,其中我有一个UILabel。我想在点击UIView 时将UILabel.Font 更改为自定义UIFont(这会扩大可点击区域而不是使用UIButton)。

要添加UITapGestureRecognizer,我使用以下代码:

var gestureRecognizer = new UITapGestureRecognizer ((item) => 
    (item.View.Subviews[0] as UILabel).Font = Constants_ios.FONT_OS_SMALL_LABEL_SEMIBOLD;
);
view.AddGestureRecognizer (gestureRecognizer);

字体更改被执行,单步执行代码显示字体更改。但它不会在 UI 中更新,并且该函数的所有后续执行也以 Font 为旧的开始。

出了什么问题?

【问题讨论】:

【参考方案1】:

添加点击selector方法。

let tap = UITapGestureRecognizer(target: self, action: Selector("handleTap:"))
tap.delegate = self
view.addGestureRecognizer(tap)

func handleTap(sender:UIGestureRecognizer)
   //change your font here

【讨论】:

你添加了UIGestureRecognizerDelegate 是的,但它仍然不起作用。但我认为我遇到了问题,我在 UITableView 的标题视图中执行此操作,显然每次点击它时都会重新构建。所以我正在执行字体更改,然后重建 headerview...【参考方案2】:

请注意,每次点击 UITableview 标题时都会重新绘制它。所以你的字体变化不会持续。

【讨论】:

以上是关于在 UITapGestureRecognizer 中更改字体的主要内容,如果未能解决你的问题,请参考以下文章

在 UITapGestureRecognizer 上添加参数

在 UITapGestureRecognizer 中更改字体

使用 UITapGestureRecognizer 无法识别的选择器

带有点击事件的 UITapGestureRecognizer

UITapGestureRecognizer 和 touchesBegan 用于相同的视图

UIButton 上的 UITapGestureRecognizer