
[英]Why WriteToFile method does not works in (IBAction)btnClicked:(id)sender?
[英]How to call an IBAction method with id sender programmatically?
我的代码中包含以下IBAction方法。
-(IBAction)handleSingleTap:(id)sender
{
// need to recognize the called object from here (sender)
}
UIView *viewRow = [[UIView alloc] initWithFrame:CGRectMake(20, y, 270, 60)];
// Add action event to viewRow
UITapGestureRecognizer *singleFingerTap =
[[UITapGestureRecognizer alloc] initWithTarget:self
action:@selector(handleSingleTap:)];
[self.view addGestureRecognizer:singleFingerTap];
[singleFingerTap release];
//
UILabel *infoLabel = [[UILabel alloc] initWithFrame:CGRectMake(5,30, 100, 20)];
infoLabel.text = @"AAAANNNNVVVVVVGGGGGG";
//[viewRow addSubview:infoLabel];
viewRow.backgroundColor = [UIColor whiteColor];
// display the seperator line
UILabel *seperatorLablel = [[UILabel alloc] initWithFrame:CGRectMake(0,45, 270, 20)];
seperatorLablel.text = @" ___________________________";
[viewRow addSubview:seperatorLablel];
[scrollview addSubview:viewRow];
如何在允许它接收该方法的调用者对象的同时调用IBAction方法?
方法签名是手势识别器和UIControl所共有的。 两者都可以正常工作而不会发出警告或错误。 要确定发件人,请首先确定类型...
- (IBAction)handleSingleTap:(id)sender
{
// need to recognize the called object from here (sender)
if ([sender isKindOfClass:[UIGestureRecognizer self]]) {
// it's a gesture recognizer. we can cast it and use it like this
UITapGestureRecognizer *tapGR = (UITapGestureRecognizer *)sender;
NSLog(@"the sending view is %@", tapGR.view);
} else if ([sender isKindOfClass:[UIButton self]]) {
// it's a button
UIButton *button = (UIButton *)sender;
button.selected = YES;
}
// and so on ...
}
要调用它,直接调用它,让它连接的UIControl调用它,或者让手势识别器调用它。 他们都会工作。
您不必调用它,因为您将方法用作UITapGestureRecognizer
Selector
,因此只要轻按该应用程序,它将自动调用。 另外,如果您可以在action:@selector(handleSingleTap:)
中的方法名称后识别冒号,则意味着将UITapGestureRecognizer
类型的对象发送给该方法。 如果您不想发送任何对象,则只需从方法中删除冒号和(id)sender
。
如您所愿:
[self handleSingleTap:self.view];
sender
可以使用任何您喜欢的id
类型。 您还可以发送带有标签的UIButton实例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.