2013-04-05 42 views
7

Tôi đang phát triển ứng dụng xmpp-client. Một trong những tính năng đó là gửi nụ cười và người dùng phải có khả năng chỉnh sửa văn bản như văn bản usuall của mình. Chỉnh sửa biểu tượng cảm xúc trong Viber App là ví dụ tốt nhất về những gì tôi muốn triển khai.UITextView với biểu tượng cảm xúc chỉnh sửa

Tôi đã thử ba cách để giải quyết vấn đề:

  • tôi có thể tạo biểu tượng cảm xúc như UIImageView thông thường và đặt nó như là một subview trên UITextView sử dụng rect caret hiện hành. Tôi sử dụng 5 khoảng trắng làm phần giữ chỗ văn bản trong chế độ xem văn bản. Có hai vấn đề: khi đặt biểu tượng cảm xúc trên dòng mới khi chèn văn bản ở giữa (khoảng trắng in không làm cho dấu nháy chuyển sang dòng mới); khi người dùng đặt dấu mũ bằng kính lúp, anh ta có thể di chuyển dấu nháy qua biểu tượng cảm xúc (thông qua 5 khoảng trắng), như phương thức ủy nhiệm không được gọi trong quá trình này.
  • Tôi đã thử EGOTextView. Có vấn đề với vị trí dấu mũ và thay đổi kích thước khi thêm dòng mới. Và có một số hiện vật dựng hình khi sử dụng nó một kích thước dòng.
  • Tôi cũng đã thử sử dụng UIWebView. Nhưng có những vấn đề lớn với việc thay đổi kích thước dựa trên kích thước văn bản và các hiện vật khác với tốc độ phản ứng khi trở thành người trả lời đầu tiên.

Có thể một số người có thể cho tôi lời khuyên về giải pháp thực sự làm việc?

Trả lời

2

Tôi không thực sự quan tâm và phạm vi cơ chế của UITextView/UITextInput, nhưng tôi cố gắng cung cấp cho bạn lời khuyên (chưa được kiểm chứng) có thể đạt được kết quả mong đợi.

Biểu tượng cảm xúc iOS tích hợp là các ký tự đơn giản, vì vậy chúng tôi có thể theo cùng một đường dẫn bằng cách tạo phông chữ tùy chỉnh (hoặc mở rộng phông chữ hiện có). Chúng tôi có hai lựa chọn:

  • Nếu bạn muốn nhắm mục tiêu iOS 6.0 (có hỗ trợ cho NSAttributedString trong lớp UIKit), bạn có thể cố gắng xây dựng một phông chữ tùy chỉnh chứa tất cả các biểu tượng cảm xúc mà bạn cần, và sử dụng nó bên trong NSAttributedString của bạn (chuỗi được phân bổ có thể kết hợp các phông chữ, kích thước phông chữ, kiểu khác nhau).

  • Bạn có thể làm điều gì đó tương tự với iOS 5, nhưng kể từ khi bạn không thể sử dụng NSAttributedString bên UITextView (vì vậy bạn được giới hạn chỉ là một phông chữ cho toàn bộ văn bản), bạn nên sử dụng một phông chữ kết hợp cùng nhau thực tế ký tự và biểu tượng cảm xúc tùy chỉnh: vì vậy bạn nên mở rộng phông chữ bạn muốn sử dụng để nhập, bằng cách thêm tất cả các biểu tượng cảm xúc vào đó. Tôi không biết nếu điều này có thể có giấy phép ngụ ý, anyway.

Nếu không, bạn luôn có thể đi nhiều hơn nữa ở mức độ thấp, thực hiện TextView tùy chỉnh của riêng bạn sử dụng CoreText, nhưng tôi nghĩ rằng nó sẽ là một công việc khó khăn.

+0

Cảm ơn lời khuyên. Tôi cũng bắt đầu nghĩ về tùy biến phông chữ, nhưng tôi thực sự không biết cách tạo các hình ảnh bitmap màu đầy đủ theo phông chữ như biểu tượng cảm xúc của táo. – yariksmirnov

+0

Có cách nào để kết hợp các hình ảnh đầy màu sắc trong một phông chữ trên iOS không? – Stavash

+0

Tôi đã quản lý để tạo phông chữ tùy chỉnh với bảng sbix sử dụng hình ảnh png tùy chỉnh. Nó hoàn toàn hoạt động trên OS X, nhưng iOS từ chối để render glyphs mà chỉ lập bản đồ cho bảng sbix từ phông chữ khác rồi phiên bản hệ thống của Apple Emoji. Nói cách khác, nếu bạn đặt phông chữ tùy chỉnh trong UITextView thành UILabel theo lập trình và đặt giá trị văn bản một số mã biểu tượng UTF biểu tượng cảm xúc, glyph từ phông chữ biểu tượng cảm xúc tiêu chuẩn sẽ được hiển thị ngay cả khi trong glyph phông chữ tùy chỉnh của bạn trình bày cho mã UTF đó. – yariksmirnov

Các vấn đề liên quan