목록분류 전체보기 (172)
일모도원(日暮途遠) 개발자
아래처럼 코드가 있다. let textStorageString = layoutManager.textStorage!.string as NSString NSString로 변환했기에 쉽게 값을 볼수 있을줄 알았는데, textStorageString에 커서를 갔다대니, NSBigMutableString이라고 나온다. ">"을 눌러서 계속 들어가봐도 내가 생각하는 문자열이 보이지 않는다. XCode의 콘솔창에서 print textStorageString를 해봐도 똑같다. (lldb) print textStorageString (NSBigMutableString) $R1 = 0x00006000030ebcc0 class name = NSBigMutableString 이럴때는 print대신 po를 사용해보자. prin..
가끔 XCode에 Storyboard를 추가하다보면 아래와 같은 에러를 만난다. [Storyboard] Unknown class HuriganaTestViewController in Interface Builder file. Could not cast value of type 'UIViewController' (0x12f1174d8) to 'AraHanja.HuriganaTestViewController' (0x109d2a698). Could not cast value of type 'UIViewController' (0x12f1174d8) to 'AraHanja.HuriganaTestViewController' (0x109d2a698). 분명히 해당 이름의 스토리 보드파일이 있는데, 없다고 나온다. 새..
간만에 iOS앱을 수정하기 위해서 빌드를 해보니 아래처럼 에러가 나온다. (XCode 14부터 나오는 에러라고 한다) File not found: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/arc/libarclite_iphonesimulator.a 에러메시지를 꼼꼼히 안봐서 첨에는 시뮬레이터쪽이슈인가 했는데, 구글링 해보니 libarclite가 deprecated를 지나서 obsolete가 되어서 나온 에러다. Xcode 14 only supports building for a deployment target of iOS 11. libarclite was necessary for older O..
Option + Enter (⌥ + ⏎)를 사용하는 메뉴명이 뭔지 궁금해서 찾는 방법이다. Preferences나 Settings로 와서 keymap을 선택한다. 그냥 option라고 치면, 메뉴명에 option이 들어가 있는걸 보여준다. 그렇다고 option키를 누르면 아무것도 진행이 안된다. 이럴때는 검색창 옆의 "Find Actions by Shortcut"를 클릭하자. 여기서는 직접 Option키와 Enter키를 키보드에서 동시에 누르면 그 Short Cut이 보이고 거기에 해당되는 메뉴들만 보여준다. (⌥⏎ 문자를 복사해서 넣는게 아니다.)
ExoPlayer를 이용해서 동영상플레이어를 개발하고 있다. 백그라운드에서 동영상을 플레이하고 있으면 시간이 좀 지나면 재생이 멈추는 현상이 발생한다. 이는 Service를 만들어서 해결했다. (오래되어서 서비스를 만들었다는 기억도 잘안난다.) 한참 잘 쓰고 있는데, 동영상을 정지상태에서 다른 앱을 열어서 좀 보다가 다시 돌아오면 플레이버튼이 작동을 안하는 현상을 발견했었다. 다른 모든 기능은 되는데... 자세히 보니 동영상 화면도 검다. 다른앱을 가기전에는 분명히 화면이 보인상태에서 재생만 정지했는데... exoPlayer.setPlayWhenReady(true)를 실행해도 실행이 되지 않는다. exoPlayer는 분명 null이 아닌데, 다시 exoplayer를 init해도 안된다... 귀찮아서 그냥..
AlertDialog말고 Material Dialogue를 사용해보고 싶었다. 웹싸이트를 보면 아래처럼 둥근 테두리에 디자인이 좋아 보인다. https://github.com/material-components/material-components-android/blob/master/docs/components/Dialog.md#basic-dialog 에 보면 예제가 있다. new를 붙여서 자바코드를 실행해본다. new MaterialAlertDialogBuilder(this) .setMessage("메시지") .setPositiveButton("OK", null) .setNegativeButton("취소", null) .show(); 근데 나는 왜 둥근 테두리가 안나오지? setRadius가 있으면 좋을..
다이얼로그 레이아웃에서 넓이를 match_parent로 줬는데도, 다이얼로그의 넓이가 많이 작다. 오른쪽 처럼 뷰 넓이의 90%를 만들어 보자. 넓이를 90%로 주기 위해서 아래 아래 두줄을 추가했다. 주의 할점은 dialog.show 다음에 추가해야 한다. int width = (int)(activity.getResources().getDisplayMetrics().widthPixels*0.9); dialog.getWindow().setLayout(width, ViewGroup.LayoutParams.WRAP_CONTENT); private Dialog dialog; ... dialog.show(); int width = (int)(activity.getResources().getDisplayMetri..
분명히 손으로 붙여넣기하면 텍스트가 붙여넣어지는데, 평소에 잘쓰던 아래 코드가 안먹는다. 보니까 hasPrimaryClip이 false를 리턴한다. public static String getTextFromClipboard(Context context) { String str = ""; ClipboardManager cm = (ClipboardManager) context.getSystemService(CLIPBOARD_SERVICE); if ((cm != null) && (cm.hasPrimaryClip() == true)) { ClipData clip = cm.getPrimaryClip(); ClipData.Item item = clip.getItemAt(0); if ((item != null) &&..