wfb*_*ale 100 iphone interface-builder uilabel touch-event ios
好的,所以我UILabel在界面构建器中创建了一些显示"tap to begin"的默认文本.
当用户点击UILabel我想要它触发IBAction方法时:
-(IBAction)next;它更新标签上的文字以说出新的东西.
如果这允许我简单地将连接从我的方法拖到我的标签然后选择内部触摸,就像按钮一样,那将是非常方便的.但是,唉,没有雪茄.
所以无论如何,我想我的问题是,我是否必须继承UILabel才能使其工作?或者是否有某种方法可以在标签上拖动按钮,但使其为0%不透明.或者是否有一个我想念的更简单的解决方案?
Sco*_*ger 253
看看这个:
UILabel *label = ...
label.userInteractionEnabled = YES;
UITapGestureRecognizer *tapGesture =
[[UITapGestureRecognizer alloc] initWithTarget:self
action:@selector(labelTap)];
[label addGestureRecognizer:tapGesture];
Run Code Online (Sandbox Code Playgroud)
诀窍是启用用户交互.
Rem*_*ver 70
UILabel继承自UIReeponder继承的UIView.所有UIresponder对象都可以处理触摸事件.所以在您的类文件中知道您的视图(包含UIlabel)实现:
-(void)touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event;
Run Code Online (Sandbox Code Playgroud)
在界面构建器中设置UILabel的标记值.当touchesBegan方法中出现触摸时,请检查标记所属视图的标记值:
UITouch *touch = [touches anyObject];
if(touch.view.tag == MY_TAG_VAL)
label.text = @"new text";
Run Code Online (Sandbox Code Playgroud)
通过使用IBOutlet前缀声明UILabel实例变量,将类文件中的代码与接口构建器中的UILabel对象连接:
IBOutlet UILabel *label;
Run Code Online (Sandbox Code Playgroud)
然后在界面构建器中,您可以连接它们.
Eik*_*iko 30
您可以使用UIButton,使其透明,即没有图像的自定义类型,并在其上添加UILabel(居中).然后连接正常的按钮事件.
小智 16
斯威夫特3
你有一个IBOutlet
@IBOutlet var label: UILabel!
Run Code Online (Sandbox Code Playgroud)
您可以在其中启用用户交互并添加手势识别器
label.isUserInteractionEnabled = true
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(userDidTapLabel(tapGestureRecognizer:)))
label.addGestureRecognizer(tapGesture)
Run Code Online (Sandbox Code Playgroud)
最后,处理水龙头
func userDidTapLabel(tapGestureRecognizer: UITapGestureRecognizer) {
// Your code goes here
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
93014 次 |
| 最近记录: |