分享

动态创建的UIButton 如何执行事件? | iOS开发讨论区

 quasiceo 2014-12-01


 

    xButton = [[[UIButton alloc]initWithFrame:CGRectMake(11,12,28,25)]autorelease];
    [xButton addTarget:self action:@selector(refreshfunc:) forControlEvents:UIControlEventTouchUpInside];
    [xButton setBackgroundImage:[UIImage imageNamed:@"rcldd.png"] forState:UIControlStateNormal];
    [labelLocationPage addSubview: xButton];

xButton可以显示了,但点击的时候没有反应,为何啊

lvyile 2010-02-03 17:25
1.
检查refreshfunc:内部实现情况

2.
理解TouchUpInside、TouchDown等之间的细微区别
forControlEvents:UIControlEventTouchUpInside

bright 2010-02-03 17:28
labelLocationPage.userInteractionEnabled = YES; ??

qwjcool 2010-02-04 17:51
labelLocationPage的frame是不是太小了?

kissau 2010-02-08 17:34
假如我动态创建多个button,我如何区别每个button的事件?
或者如何在那个方法(refreshfunc)加参数。


谢谢!

tsong0202 2010-02-08 20:31
如果你有仔细看的话,你会发现,原来@selector(refreshfunc:)是可以传递参数的!那么为什么不试试传递一个UIButton作为参数呢?如果你拿到了这个button,那么想区分出这些button会很难吗?Good Luck!

nono 2010-02-09 06:57
myButton.tag = xx;

if (tag == ){

}

kissau 2010-02-09 09:25
引用
引用第5楼tsong0202于2010-02-08 20:31发表的  :
如果你有仔细看的话,你会发现,原来@selector(refreshfunc:)是可以传递参数的!那么为什么不试试传递一个UIButton作为参数呢?如果你拿到了这个button,那么想区分出这些button会很难吗?Good Luck!

我试过,好像不行。
请问你的参数形式怎么写的?谢谢!

kissau 2010-02-09 09:30
引用
引用第6楼nono于2010-02-09 06:57发表的  :
myButton.tag = xx;

if (tag == ){

}

没明白你意思?

你是想在创建button时给他设置tag属性,然后在调用方法中判断tag值吗?
如果这样,直接判断 (tag==XX)能取到button的tag吗?

nono 2010-02-09 17:47
:sender{}

根据 tag 或者 根据button 的 title,以及 其它可区分的 特性都可以区别 UIButton。

http://www./bbs/read.php?tid-8320-keyword-%BC%C6%CB%E3%C6%F7.html
4楼!用 title 的方法
tag 的方法 一个道理!!
我建议用tag
UIButton *selectedButton = (UIButton *) sender;
selectedButton.tag....

superarts 2010-02-09 23:48
拿到sender之后直接比也可以……

if (sender == button_ok)
    do_something();

kissau 2010-02-10 09:17
引用
引用第9楼nono于2010-02-09 17:47发表的  :
:sender{}

根据 tag 或者 根据button 的 title,以及 其它可区分的 特性都可以区别 UIButton。

http://www./bbs/read.php?tid-8320-keyword-%BC%C6%CB%E3%C6%F7.html
.......

明白了。

谢谢斑竹了。

ps:今天就回家过年了,祝坛子的各位兄弟姐妹虎年快乐。开发的程序都进排行榜,赚大钱。

xiaxiulong 2011-03-16 14:37
我和楼主的问题一样,
[xButton addTarget:self action:@selector(refreshfunc:) forControlEvents:UIControlEventTouchUpInside];
请问大侠们,上面这个语句具体怎么实现啊,比如说,用实现什么协议吗?还有refreshfunc这个函数在哪里实现呢?
还请各位大虾详细解释一下这条语句呗,谢谢了!

iphoning 2011-03-16 15:14
你确定你的函数是 -(IBAction)?

iphoning 2011-03-16 15:16
自己定义-(IBAction) 函数

zzhangchenn 2011-03-16 15:21
唉,版主大大门都是喜欢成群结队出现的 - - 上一段动态创建button并且给他添加点击事件的代码
    for (int i=0; i<9; i++) {
        
        CGRect frame;
        
        Btn = [[UIButton buttonWithType:UIButtonTypeCustom] retain];
        
        [Btn setImage:[UIImage imageNamed:[imageNames objectAtIndex: i]] forState:UIControlStateNormal];//设置按钮图片
        
        Btn.tag = i;
        
        frame.size.width = 58;//设置按钮坐标及大小
        
        frame.size.height = 58;
        
        frame.origin.x = (i%4)*(58+18)+18;
        
        frame.origin.y = floor(i/4)*(58+24)+10;
        
        [Btn setFrame:frame];
        
        [Btn setBackgroundColor:[UIColor clearColor]];
        
        [Btn addTarget:self action:@selector(btnPressed:) forControlEvents:UIControlEventTouchUpInside];
        
    
        
        [Btn release];
        
    }



    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约