【问题标题】:Selecting UIView programmatically以编程方式选择 UIView
【发布时间】:2012-07-21 09:59:52
【问题描述】:

在我的应用程序中,我想以编程方式选择 UIView。 如何以编程方式选择UIView

If(UIView is selected programmatically || UIView is tapped){

          invoke tapGesture Action
}

有可能吗?

【问题讨论】:

  • 选择视图是什么意思?更改视图的颜色或以某种方式突出显示它?
  • 我的意思是我想以编程方式点击 UIView
  • 当一个视图被点击时,一个方法被调用作为目标的动作。没有什么可以阻止您以编程方式调用该方法。

标签: iphone ios uiview uigesturerecognizer uitapgesturerecognizer


【解决方案1】:

UIView 本身不支持选择,尽管一些子类支持。例如,UITableViewCell 有一个selected 属性,它可以修改单元格的绘制方式。

如果您想模仿用户点击视图时发生的情况,您需要做两件事:

  • 提供与用户点击该视图时相同的反馈。这可能意味着重绘视图、执行动画、播放声音或这些的某种组合。

  • 执行与用户点击视图相同的操作。

因此,如果视图是一个按钮,您可以将其highlighted 状态设置为“是”,等待大约 0.2 秒,然后将其设置回之前的状态。接下来,在按钮的目标上调用按钮的操作。

【讨论】:

    【解决方案2】:

    在视图中添加UITapGestureRecognizer

    UITapGestureRecognizer *tapGR = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(aMethodToBeCalled)];
    [yourView addGestureRecognizer:tapGR];
    

    实现aMethodToBeCalled 方法并在此处执行任何需要调用的操作。

    【讨论】:

    • 我也想以编程方式选择 UIView 并想调用相同的方法“aMethodToBeCalled”
    • 我不明白你所说的“选择 UIView”是什么意思
    • 我的意思是我想以编程方式点击 UIView
    • 是的,我也不关注。多点触控 UI 取决于用户点击某些东西。这就是手势的用武之地。如果您想在发生某事时突出显示视图,那就另当别论了。您真正要寻找的是处理您描述的这个事件。上面的代码正在处理一个点击事件。
    • 对不起,@IdreesAshraf - 你的问题很不清楚。请找到一种不同的方式来描述您的需求,否则我无法帮助您。
    【解决方案3】:

    我想你想选择子视图。

    您可以在初始化时标记视图:

    UIView *exampleView = [UIView alloc] init];
    [exampleView setTag:1];
    

    添加视图:

    [self.view addSubView:exampleView];
    

    当你想调用视图时,只需使用:

    [self.view viewWithTag:1];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-05
      • 2011-09-06
      • 1970-01-01
      • 1970-01-01
      • 2018-06-04
      • 2017-03-17
      • 2011-10-27
      • 2012-11-04
      相关资源
      最近更新 更多