ios Object-c
object学习过程疑问点整理
-
IBAction
IBAction
,它是用于处理用户界面上的事件响应的方法。IBAction
是Objective-C中的特殊关键字,用于声明一个方法作为用户界面元素(如按钮)的动作方法。IBAction
本质上是一个void
类型的方法,它没有返回值。它被用于与用户界面元素进行连接,当用户触发相应的事件时,该方法会被调用执行。在你提供的代码中,
changTexg
方法被声明为IBAction
,它没有返回值。当用户执行与此方法关联的事件时,它会在控制台打印一条日志信息"chang",但它不会返回任何值。如果你想要一个有返回值的方法,你可以使用其他关键字(如
-(NSString *)methodName
)来声明一个普通的Objective-C方法 -
iOS用户事件
- Touch events(触摸事件):
- Touch Down:手指触摸到界面元素时触发。
- Touch Up Inside:手指触摸并释放在界面元素内部时触发。
- Touch Up Outside:手指触摸并释放在界面元素外部时触发。
- Touch Drag Inside:手指触摸并拖动在界面元素内部时触发。
- Touch Drag Outside:手指触摸并拖动在界面元素外部时触发。
- 等等...
- Control events(控件事件):
- UIControlEventTouchUpInside:当用户点击一个控件时触发。
- UIControlEventValueChanged:当控件的值发生变化时触发。
- UIControlEventEditingDidBegin:当用户开始编辑一个控件时触发。
- UIControlEventEditingDidEnd:当用户结束编辑一个控件时触发。
- 等等...
- Gesture recognizers(手势识别器):
- UITapGestureRecognizer:当用户轻触一个视图时触发。
- UIPanGestureRecognizer:当用户拖动一个视图时触发。
- UILongPressGestureRecognizer:当用户长按一个视图时触发。
- UISwipeGestureRecognizer:当用户快速滑动一个视图时触发。
- 等等...
使用这些事件,你可以在相应的方法中编写代码来处理用户的操作。例如,你可以在一个按钮的
Touch Up Inside
事件中关联一个方法,当用户点击按钮时,该方法会被调用执行。在方法中,你可以编写代码来响应按钮点击,比如更新界面、执行某个操作等。你可以使用Interface Builder来关联事件和方法,也可以通过代码来关联。通过代码关联事件的方法通常是使用
addTarget:action:forControlEvents:
方法,例如:[button addTarget:self action:@selector(buttonTapped:) forControlEvents:UIControlEventTouchUpInside];
在这个例子中,我们将按钮的
TouchUpInside
事件与buttonTapped:
方法关联起来。当用户点击按钮时,buttonTapped:
方法会在self
对象中被调用执行。希望这些信息能够帮助你理解iOS中的事件和如何使用它们来响应用户的操作。如果你有任何进一步的问题,请随时提问。
- Touch events(触摸事件):
-
定义中的(id)sender
在Objective-C中,
(IBAction)
是一个关键字,用于标识一个方法可以作为界面元素的动作(action)来关联。它实际上是一个宏定义,被展开为void
类型的返回值。(id)sender
是方法的参数,表示发送动作的对象。在按钮点击事件中,sender
参数通常是触发事件的按钮本身。通过该参数,你可以获取按钮的属性、执行一些操作或者将按钮传递给其他方法。在按钮点击事件的处理代码中,你可以使用
sender
参数来访问按钮的属性,例如标题、颜色等。你还可以使用sender
参数来执行一些特定的操作,例如隐藏或显示其他视图、更新数据等。下面是一个示例,展示了如何使用
sender
参数来改变按钮的标题: -
NSLog输出对象
在你提供的代码中,
NSLog(id);
是一个错误的写法。id
是Objective-C中的一个关键字,用来表示任意类型的对象。在NSLog
函数中,你需要传入一个格式化字符串,然后根据格式化字符串的格式,传入相应的参数。如果你想打印
sender
对象的信息,你可以使用%@
格式化符号来打印一个对象的描述。修改你的代码如下:- (IBAction)changeText:(id)sender { NSLog(@"%@", sender); }
在这个例子中,
%@
将被替换为sender
对象的描述,然后输出到控制台。你还可以使用其他格式化符号来打印不同类型的数据,例如
%d
用于整数,%f
用于浮点数,%s
用于C字符串等。希望这个解释对你有帮助。如果你还有其他问题,请随时提问。