iOS 34

Swift) TapGesture사용시 셀 선택이 안될때 (didselect함수가 작동을 하지 않을 때)

키보드를 내리기 위해 탭제스처를 뷰에 추가하니깐 셀 선택이 안된다. 원인 cancelsTouchesInView 제스처가 인식됐을 때 뷰에 터치를 전달해 줄 것인가에 대한 Bool 값 (Default = true) true 일때 제스처를 인식하면, 제스처의 터치는 뷰에 전달되지 않고 touchesCancelled(_:with:)메세지로 취소된다. 이 값이 false이면 뷰는 모든 터치를 전달받습니다. 해결 let tap = UITapGestureRecognizer(target: self, action: #selector(keyboardDown)) tap.cancelsTouchesInView = false // 해당속성을 false로 view.addGestureRecognizer(tap) https://de..

iOS/오류 2023.09.12

Swift) 제네릭 (Generics)활용 APICallRequest 함수 간소화

TMDB API 요청을 하다보니 요청 함수가 많아져서 방법을 찾아봤다. CallRequest API API요청 함수들을 보면 데이터를 받아와 Codable을 채택한 모델로 변환해서 반환 하고 있다. 요청 데이터 타입에 따라 함수가 계속 늘어난다. //영화크루 호출 func callRequestCredit(type: EndPoint, completionHandler: @escaping (MoviePersons) -> () ){ let url = type.requestURL let header: HTTPHeaders = [ "Authorization": APIKey.TMDBReadKey ] print(url) let parameters: Parameters = ["language": "ko"] AF.requ..

iOS/swift 2023.09.04

Swift)여러번 호출되는 Alert 경고창 활용

여러 곳에서 alert를 호출하다 보면 같은 코드가 반복된다. 간단하게 줄여보자. 함수 선언 UIViewController에서 호출 하기 위해 확장을 통해 함수를 선언 해줍니다. addButtonText 를 넣어주지 않으면 취소 버튼만 있는 경고창을 띄웁니다. extension UIViewController{ func showAlert(text: String, addButtonText: String? = nil, Action: (() -> Void)? = nil) { let alert = UIAlertController(title: "경고!", message: text, preferredStyle: .alert) let cancel = UIAlertAction(title: "취소", style: .des..

iOS/UIKit 2023.08.27

SwiftyJSON) json.intValue,stringValue의 기본값

로또 API를 통해 당첨번호를 가져오고 있었다. 가장 최근 회차는 1079 인데 아직 진행하지 않은 1100회차를 넣었을때 앱이 꺼지지않아 찾아봤다. 1. int 와 intValue SwiftyJSON 에서 int는 Int?타입으로 nil값을 가질 수 있고, intValue는 nil값을 가질 수 없다. 왜 앱이 꺼지지 않고 0이라는 값이 나올까 하나하나 다 출력 해 보자. JSON의 값으로는 fail이 넘어왔고, 다른 상수들에는 기본 값을 설정 한 적이없는데 0과 빈 문자열이 들어가 있다. 2. stringValue의 내부 stringValue를 보면 타입이 string 이면 object를 String타입으로 타입 캐스팅 하고 있다. 타입 캐스팅에 실패할 경우 ""(빈문자열) 을 반환 하고 있다. num..

iOS 2023.08.09

Cannot use mutating member on immutable value 에러

변수가 let 으로 선언되어 변경 할 수 없다는 오류이다. struct ToDo{ var main: String var sub: String var like: Bool var done: Bool } 해당 Todo 는 구조체로 선언 되어있다. 함수에서 todo 의 done 값을 바꾸기 위해 toggle() 함수를 사용했는데 해당 오류가 발생하였다. func tapCheckButton(todo: ToDo){ if todo.done { checkImageView.image = UIImage(systemName: "checkmark.square.fill") }else{ checkImageView.image = UIImage(systemName: "checkmark.square") } todo.done.toggl..

iOS/오류 2023.07.30

Swift) UIView.animate,UILabel Blink animation[ UIView 애니메이션, UILabel 깜빡이게 하기]

UIView.animate란? UIView.animate는 iOS의 UIKit 프레임워크에서 제공하는 메서드로, 애니메이션을 적용하고자 하는 UIView의 속성을 변경하는 데 사용됩니다. 이를 통해 시각적인 변화를 자연스럽게 만들거나 사용자 경험을 향상시킬 수 있습니다. 애니메이션 구현을 위한 메서드 UIKit에서는 UIView의 클래스 메서드로 다음과 같이 사용합니다: UIView.animate(withDuration: 0.5, delay: 0, options: .curveEaseInOut, animations: { // 애니메이션 적용할 속성들 }, completion: nil) - withDuration: 애니메이션의 지속 시간을 초 단위로 설정합니다. - animations: 애니메이션의 중간 상..

iOS/UIKit 2023.07.25

Swift) UIColor(RandomColor), 랜덤 컬러 뽑기

func RandomColor() -> UIColor { let red = CGFloat.random(in: 0...1) let green = CGFloat.random(in: 0...1) let blue = CGFloat.random(in: 0...1) let color = UIColor(red: red, green: green, blue: blue, alpha: 1.0) return color } 해당 함수를 호출하면 랜덤 UIColor값이 반환된다. @IBAction func resultButtonTapped(_ sender: UIButton) { resultLabel.textColor = RandomColor() } 버튼 이벤트에 선언해주면 버튼을 누를 때 마다 랜덤색으로 변경된다.

iOS/UIKit 2023.07.25

UITextField(Editing Did End , Editing Did End On Exit) 이벤트

UITextField의 여러가지 이벤트중 Editing Did End , Editing Did End On Exit 에 대해 알아보겠습니다. Editing Did End Editing Did End 이벤트는 사용자가 텍스트 필드의 편집을 종료하고 다른 곳을 탭하거나 다른 UI 요소로 포커스가 이동하는 등의 동작을 취할 때 발생합니다. 즉, 사용자가 텍스트 입력을 완료하고 편집이 끝날 때마다 이 이벤트가 호출됩니다. 주로 텍스트 필드에서 입력이 끝난 후에 편집된 내용을 처리하거나 유효성 검사 등의 동작을 수행할 때 사용됩니다. // did end : 편집이 종료될때 호출 @IBAction func mainTextFieldActionDidEnd(_ sender: UITextField) { resultLabe..

iOS/UIKit 2023.07.19