Target / Action์ ์ฌ์ฉ์ interaction์ ์ฒ๋ฆฌํ๋ ์ฃผ์ ๋ฐฉ๋ฒ์ผ๋ก ์๋ ค์ ธ์๋ค. ๋ฌธ์๋ฅผ ์ฝ์ผ๋ฉฐ ์์๋ณด์.
Target/Action
Target/Action์ ๋ํ์ ์ธ ๋น๋๊ธฐ ์ด๋ฒคํธ์ด๋ค. Action์ด ์์ ๋, ์ฒ๋ฆฌ๋๋ ๋ฐฉ์์ด๊ธฐ ๋๋ฌธ์ด๋ค.
๊ฐ๋จํ๊ฒ Target/Action์ ๋ํด์ ์์๋ณด์. ๊ฐ์ฒด๊ฐ์ ์ํต์ ์ํด delegation, notification ๋ฑ์ด ์์ผ๋, ์ด๊ฒ๋ง์ผ๋ก๋ ํ๋ฉด์์ ๋ณด์ด๋ ๊ฒ๋ค์ ์ํต์๋ ๋ถ์กฑํจ์ด ์๋ค. User Interface์์ ๊ฐ์ฅ ์ ํ์ ์ธ ๊ฒ์ Graphic ์์์ด๊ณ , ์ด๊ฒ๋ค์ ๊ตฌ์ฑํ๋ ๋๋ถ๋ถ์ Control์ด๋ค. ์ฐ๋ฆฌ๊ฐ ๋ง์ฃผํ๋ Control์ ๋ณดํต, Button, SLider, Checkbox ๋ฑ๋ฑ์ด ์๋ค. ์ด ๋ ์๋ค๊ณผ์ ์ํ ํ ์ํต์ ์ํด ํด๋น ๊ตฌ์กฐ๋ฅผ ์ฑํํ๋ค.
Control์ ์ญํ ์ ๊ต์ฅํ ๊ฐ๋จํ๋ฐ, ์ฌ์ฉ์์ ์๋๋ฅผ ํด์ํ๊ณ , ๊ทธ ์์ฒญ์ ์ํํ๊ธฐ ์ํด ๋ค๋ฅธ ๋์์ ๊ฐ๋ฆฌํค๋ ๊ฒ์ด๋ค. ์ฆ ํน์ Action์ด ์ทจํด์ง ๊ฒฝ์ฐ, ์ด๋ฅผ ์ฒ๋ฆฌํ ์ ์๋๋ก ์ด ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ค๋ฅธ ๋ ์์ ๊ฐ๋ฆฌํค๋๋ก ํ๋ ๊ฒ์ด๋ค. ์ฌ๊ธฐ์ ์ ๋ฌํ ๋๋ ๋ง์ ์ ๋ณด๋ฅผ ํฌํจํ์ง ์๊ณ , ์ฌ์ฉ์๊ฐ ์ด๋ค Action์ ์ทจํ๋์ง์ ๋ํด์๋ง ์๋ ค์ค๋ค. ์ด๋ฐ ๊ฒ์ Target/Action ๋งค์ปค๋์ฆ์ด๋ผ ํ๋ค.
Objective C ๋ฐํ์์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์, Code๋ก ์ฒ๋ฆฌํ๊ธฐ ์ํด์๋ @objc
๋ฅผ ์ ์ด์ฃผ์ด์ผ ํ๋ค.
Code๋ก ์ฌ์ฉํ๋ ๊ฒ์ด ์๋์ ์ผ๋ก ์ต์ํ์ง ์์ผ๋ ๊ฐ๋จํ๊ฒ ์ ์ด๋ณด๊ฒ ๋ค.
UIControl
UIKit์์๋ UIControl
๊ฐ์ฒด๋ฅผ ์์๋ฐ์์ Customizing ํ ์ ์๋ค. Control๋ค์ base class๋ก์, visual element๋ค์ด ํน์ Action ํน์ ์ฌ์ฉ์ interaction์ ์ ๋ฌํ๋ ๋
์์ด๋ค. ์์์ ๋ณด์๋ Button, Slider, TextField๋ค์ด ๊ทธ ์๊ฐ ๋ ์ ์๋ค.
UIControl ๊ฐ์ฒด๋ ์ง์ ์ ์ผ๋ก ์์ฑํ๋ฉด ์๋๋ค. Subclassingํ์ฌ ๋๋ง์ Control ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ณ , ๊ทธ ๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ ์ฌ์ฉํด์ผ ํ๋ค.
์ด๋ฒคํธ๊ฐ ์ผ์ด๋๊ฒ ๋๋ฉด, control์ ์ฝํ Action์ ๋ฐ๋ก ํธ์ถํ๋ค. ๊ทธ๋ผ ์ด method๋ฅผ ์ค์ ๋ก ์ฐพ์์ ์คํํด์ผ ํ ํ
๋ฐ, ๊ทธ๊ฑด UIApplication
์ด ์ํํ๋ค. ์ด ๊ณผ์ ์์ ๋ง์ฝ ํ์ํ๋ค๋ฉด responder chain์ ๋ฐ๋ผ์ ๋ฉ์์ง๋ฅผ ์ ๋ฌํ๋ค. Responder Chain์ด ๊ถ๊ธํ๋ค๋ฉด ์ด ๊ธ์ ์ฐธ๊ณ ํ์.
Customizing์ ๊ฐ๋จํ๋ค. ๋ด๋ถ CALayer
์ฒ๋ฆฌ๊ฐ ๋ณต์กํด์ ๊ทธ๋ ์ง.
์ด๋ฐ์์ผ๋ก ์ฌ์ฌ์ฉํ ์ ์๋ค. ๊ฐ์ Control ๊ฐ์ฒด๋ผ๋ ์ด๋ค Event์ด๋์ ๋ฐ๋ผ ๋ค๋ฅธ Action์ ๋ฐ์ธ๋ฉํ ์ ์๋ค. ์ด๋ฒคํธ์ ์ข ๋ฅ๋ UIControl.Event๋ฅผ ์ฐธ๊ณ ํ์.
๋ํ Control๊ฐ์ฒด๋ ์ํ๋ฅผ ๊ฐ์ง ์ ์๋ค. ์ ํ๋ ์ํ, ํ์ฑํ ์ํ ๋ฑ ๋ค์ํ ๊ฐ์ ๊ฐ์ง ์ ์๋ค. ์ด ๊ฐ๋ ์ค์ ํ ์ ์๋๋ฐ, UIControl.State๋ฅผ ์ฐธ๊ณ ํ์.