ios Object-c

发布于 2023-10-14  57 次阅读


Table of Contents

ios Object-c

object学习过程疑问点整理

  • IBAction

    IBAction,它是用于处理用户界面上的事件响应的方法。IBAction是Objective-C中的特殊关键字,用于声明一个方法作为用户界面元素(如按钮)的动作方法。

    IBAction本质上是一个void类型的方法,它没有返回值。它被用于与用户界面元素进行连接,当用户触发相应的事件时,该方法会被调用执行。

    在你提供的代码中,changTexg方法被声明为IBAction,它没有返回值。当用户执行与此方法关联的事件时,它会在控制台打印一条日志信息"chang",但它不会返回任何值。

    如果你想要一个有返回值的方法,你可以使用其他关键字(如-(NSString *)methodName)来声明一个普通的Objective-C方法

  • iOS用户事件

    1. Touch events(触摸事件):
      • Touch Down:手指触摸到界面元素时触发。
      • Touch Up Inside:手指触摸并释放在界面元素内部时触发。
      • Touch Up Outside:手指触摸并释放在界面元素外部时触发。
      • Touch Drag Inside:手指触摸并拖动在界面元素内部时触发。
      • Touch Drag Outside:手指触摸并拖动在界面元素外部时触发。
      • 等等...
    2. Control events(控件事件):
      • UIControlEventTouchUpInside:当用户点击一个控件时触发。
      • UIControlEventValueChanged:当控件的值发生变化时触发。
      • UIControlEventEditingDidBegin:当用户开始编辑一个控件时触发。
      • UIControlEventEditingDidEnd:当用户结束编辑一个控件时触发。
      • 等等...
    3. 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中的事件和如何使用它们来响应用户的操作。如果你有任何进一步的问题,请随时提问。

  • 定义中的(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字符串等。

    希望这个解释对你有帮助。如果你还有其他问题,请随时提问。