func textView(_ textView: UITextView, shouldInteractWith textAttachment: NSTextAttachment, in characterRange: NSRange, interaction: UITextItemInteraction) -> Bool 개신기.... ⭐️ textview가 isSelectable = true여야 쓸 수 있다 ⭐️
안드로이드 같은 경우에는 파일과 사진 picker가 통일된 것으로 알고 있다. 하지만 iOS에서는 파일 선택과 사진 선택은 다르게 이루어지므로 2가지를 따로 구현해주어야 한다. 파일 첨부이다. 파일 첨부를 위해서는 UIDocumentPickerViewController를 이용해야 한다. ( UIDocumentMenuViewController와 같은 경우는 deprecated 되었다. ) documentTypes를 유의해서 봐야 하는데, 저렇게 써주면 PDF인 파일들만 선택 가능하게 된다. 모든 파일을 다 선택하려면 UIDocumentPickerViewController(documentTypes: ["public.item"], in: .import) document type을 "public.item"으로 ..
카카오톡을 보면, 첨부파일을 다운로드 할 때 docx나 pdf같은 형식은 바로 preview가 보이는데, 한글 파일은 preview가 보이지 않고 파일 공유 화면으로 연결이 되었다. 이런 기능을 어떻게 구현했는지 궁금해져서 다음과 같이 정리해본다. 카카오톡에 테스트 해본 파일들. 깨진 pdf, 정상적인 pdf, hwp, docx로 테스트 해보았다. 카카오톡은 hwp 파일과 같은 경우 다음과 같이 half- modal로 present 되었다. docx, pdf는 preview로 보여진다. 깨지는 Pdf 파일은 preview 이긴 한데, 내용은 안보인다. 나도 그래서 구현해봤다!! 변수를 선언해주고, var viewer: UIDocumentInteractionController? viewDidLoad에서 초..
stackoverflow.com/questions/51158390/custom-uibutton-class-for-button-touch-event Custom UIButton class for button touch event Is it possible to create a custom UIButton class with an touch event animation which gets automatically invoked everytime the user touches the button? import UIKit class AnimatedButton: UIButto... stackoverflow.com 나에게는 모두 똑같은 액션을 하는 IBAction 함수와 그에 달린 버튼이 있었다. 이 IBActio..
앱에는 JWT를 처음 적용해봤다. jwt는 json web token의 줄임말이다. velopert.com/2389 여기에 jwt 자체에 대한 설명이 자세하게 나와있다. 로그인 성공시 오는 헤더 값들이다. 이중에 Authorization과 RefreshToken을 봐야 한다 !!! 둘다 JWT로 암호화 되어 있는데, 얘를 JWTDecode라는 pod을 써서 decode 시켰다. Authorization을 decode 시킨 결과이다. 여기서 login_id, year같이 앞으로 계속 필요한 데이터를 UserDefaults에 저장 해줬다. decode시키기 전의 Authorization 값 자체가 access token이 되므로, 그 값도 UserDefaults에 저장해준다. 다음은 RefreshToken인..
iOS10 이전에는 푸시는 서버에서 오는 메세지를 바꿀 수 없었다. 무조건 오는 그대로! 보여줬어야 했다. 하지만 iOS10부터, (silent notification이 아닌 경우에 한하여) UNNotificationServiceExtension을 만들어서 push notification의 내용을 변경하는것이 가능해졌다. 먼저, 서버에서 푸시를 보낼 때 내용에 mutable-content: 1을 꼭 써줘야 한다. 이걸 써줘야 UNNotificationServiceExtension이 콜 되기 때문! 이 extension은 Xcode에서 아예 다른 타겟으로 분리해서 만들어야 하고 (delegate가 아니라 아예 App Extenstion으로 분리되어있기 때문이다), NotificationService cla..
문서를 확인하니, 서버에서 이런 형식으로 push를 보내고 있으니 알아서 까서 앱에서 보여주라는 문서가 있었다. 이런 형식의 push를 앱에서 처리하려면 어떻게 해야할까?? 사실 나는 firebase를 통해서 푸시 연결만 해보고, 직접 json을 까서 푸시를 만들어서 띄워주는 일은 아예 처음이었다. 일단 저런 형식은 파싱할 수 없다. 저거는 안드로이드 형식이고, ios 형식은 또 다르다. iOS에서는 다음과 같은 형식으로 보내줘야 한다. (출처: hyongdoc.tistory.com/368) developer.apple.com/documentation/usernotifications/unnotificationserviceextension
Alamofire을 이용해서 이미지를 서버에 업로드 하는데, 다음과 같은 경고가 뜨면서 이미지 업로드가 안되는 문제가 발생했다. "no such file"....!!!! 분명히 사진 url을 받아와서 그대로 넘겨줬는데 왜 안될까??? 스택오버플로우를 찾아보니 다음과 같은 이야기가 있었다. Container locations change periodically therefore never save full paths pointing to the application container to UserDefaults. Save only the file names and get the URL to the current document directory always with let documentsFolderURL..
class CommentTableViewCell: UITableViewCell { @IBOutlet var senderLabel: UILabel! @IBOutlet var timeLabel: UILabel! @IBOutlet var bodyLabel: UILabel! override func awakeFromNib() { super.awakeFromNib() // Initialization code let longPressRecognizer = UILongPressGestureRecognizer(target: self, action: #selector(longPressed)) self.contentView.addGestureRecognizer(longPressRecognizer) } @objc func ..