WebView
hỗ trợ, thông qua WebEditingDelegate
, một cơ chế để đại biểu thực hiện hành vi tùy chỉnh cho một loạt các hành động mà WebView
(hoặc số WebHTMLView
) nhận được. Khi một hành động như:Làm cách nào tôi có thể phản ứng một cách có ý nghĩa với một thay đổiThuộc tính: ủy quyền truyền qua từ WebView?
-(void)changeAttributes:(id)sender
nhận được trong WebHTMLView
, nó được truyền thông qua các phương pháp đại biểu:
-(BOOL)webView:(WebView *)webView doCommandBySelector:(SEL)command
Thật không may, cơ chế không quy định về vận chuyển của "sender
" trong phương thức hành động gốc.
Đối với đại đa số các hành động, người gửi không quan trọng, nhưng đối với changeAttributes và changeFont, ví dụ: hợp đồng yêu cầu người nhận phải gọi số "sender
". convertAttributes:
hoặc convertFont:
.
Đối với trường hợp changeFont
, hóa ra là gọi số [[NSFontManager sharedFontManager] convertFont:]
là đủ, ngẫu nhiên đây là nội dung người gửi.
Trong trường hợp changeAttributes
, cụ thể khi gạch ngang được thay đổi, người gửi có thể là một lớp riêng "NSFontEffectsBox
" có lẽ tương ứng với phần phụ của bảng phông chịu trách nhiệm thay đổi cài đặt gạch ngang/v.v.
Thật không may, gọi [[NSFontManager sharedFontManager] convertAttributes:]
KHÔNG nhận được thay đổi thuộc tính dự kiến. Đây lá một đại biểu những người quan tâm trong việc thực hiện phương pháp này có ý nghĩa trong một chút của một câu hỏi hóc búa:
WebKit không truyền đạt cho người gửi, vì vậy các đại biểu không thể làm cho các hợp đồng
[sender convertAttributes:]
gọi.Cuộc gọi
changeAttributes:
được gửi đến lớp WebKit riêng tư,WebHTMLView
, không thể được phân loại thành, ví dụ: tùy chỉnh hành vi củachangeAttributes:
.Người gửi cho cuộc gọi
changeAttributes:
,NSFontEffectsBox
, là một lớp riêng tư và không thể truy cập được, ví dụ: là[NSFontEffectsBox sharedFontEffectsBox]
.
Nói tóm lại: có vẻ như không có đường cho một nhà phát triển để có ý nghĩa ghi đè lên hành vi của changeAttributes:
cho một WebView
.
Bất kỳ ý tưởng nào?
Ví dụ chính về Cách đặt câu hỏi. –
Bạn có nghĩ rằng bạn có thể đăng các dấu vết ngăn xếp của các kịch bản khác nhau không? –