- (IBAction)addButton; {
for (int i = 0; i<10; i++) {
UIButton *numberButton = [UIButton buttonWithType : UIButtonTypeRoundedRect];
[numberButton addTarget:self action:@selector(numberSelected:) forControlEvents: UIControlEventTouchUpInside];
[numberButton setTitle: [NSString stringWithFormat:@"%d", i] forState: UIControlStateNormal];
if (i<1) {
numberButton.frame = CGRectMake(29, 367.5, 58,50);
}
if (i>=1 && i<4) {
numberButton.frame = CGRectMake((i*.5)*(58/i)+68*(i-1), 332.5, 58,50);
}
if (i>=4 && i<7) {
numberButton.frame = CGRectMake((i*.5)*(58/i)+68*(i-4), 297.5, 58,50);
}
if (i>=7 && i<10) {
numberButton.frame = CGRectMake((i*.5)*(58/i)+68*(i-7), 262.5, 58,50);
}
[self.view addSubview:numberButton];
}
以下是来自简单计算器的一些代码,这是一种实例方法,其中按钮被创建并定位在显示器上。我的问题:
[numberButton addTarget:self action:@selector(numberSelected:) forControlEvents: UIControlEventTouchUpInside];
是说当在里面触摸一个按钮时它会将for循环中初始化的int值发送到头文件中声明的numberSelected方法吗?感谢您的时间迈克尔。
答案 0 :(得分:0)
numberButton.frame
,您可以通过告诉按钮如何在屏幕上定位自己来设置按钮的框架。 对于实例,CGRectMake(29, 367.5, 58,50)
表示屏幕上你的按钮在其超级视图中的起始位置是x = 29和y = 367.5,并且尺寸更具体地说是宽度是58,身高是50。
必须明确指定,因为您的控制器不知道如何创建按钮,意味着它的大小或起始位置。如果你没有指定这个,你将有一个0高度和0宽度的按钮,可能来自(0,0)位置。
[numberButton addTarget:self action:@selector(numberSelected :) forControlEvents:UIControlEventTouchUpInside];
这句话说当你按下/按下按钮时,它应该调用一个名为numberSelected的方法,该方法有一个参数,该参数是按钮本身的实例。所以,基本上在同一控制器类的某个地方,你有一个带有签名的方法,如 -
-(void) numberSelected:(UIButton*)sender;
您在循环内创建的int值与此方法无关。您没有传递该int值,而是传递按钮,它本身就是参数。
答案 1 :(得分:0)
我建议你阅读很多Apple文档,然后立即转向Stack Overflow寻求帮助。你似乎对那些非常清楚和干净地描述的东西感到困惑。
但是,直接回答你的问题:
UIView的“框架”描述了它在超视图中的位置,这意味着它包含在其中。视图可以包含其他视图,这些视图包含嵌套在一起的其他视图。与图片框中的图片类似,您有一张图片(您的按钮),您需要告诉系统将该图片放在墙上(窗口,在这种简单的情况下)。 https://developer.apple.com/library/ios/documentation/WindowsViews/Conceptual/ViewPG_iPhoneOS/WindowsandViews/WindowsandViews.html
您的第二种方法使用UIControlEventTouchUpInside
说“当用户触摸此按钮时,抬起,同时仍然按钮(触摸......向上...内部)屏幕区域“,然后它应该调用名为”numberSelected:“的方法。这与用户的手指触摸屏幕时立即调用的方法不同。此外,如果用户触摸按钮,将手指滑动到按钮图像之外,然后抬起,则不会调用该方法。
“”“表示您将传递值到那个方法,系统实际上是为你做的。它将发送触摸的按钮作为传递给“numberSelected:”的参数
UIButton是UIControl的子类,addTarget:action:forControlEvents
方法在文档的该部分中有详细解释。