Sử dụng trung tâm thông báo, như được mô tả trong How can I get a textDidChange (like for a UISearchBar) method for a UITextField?, cho phép bạn nhận thông báo khi văn bản trong thay đổi UITextField trên iOS. Tôi không thấy thông báo tương tự cho các thay đổi lựa chọn. Cách tốt nhất để phát hiện và phản hồi những thay đổi trong lựa chọn cho một UITextField là gì?Cách tốt nhất để nhận thông báo lựa chọn UITextField đã thay đổi thông báo là gì?
Trả lời
Kết nối phương thức sử dụng mục tiêu/hành động cho sự kiện kiểm soát UIControlEventEditingChanged
trên ví dụ của bạn UITextField
. Điều này có thể được thực hiện trong trình tạo giao diện hoặc trong mã bằng cách thêm cặp đích/hành động vào trường văn bản và sau đó triển khai phương thức được chỉ định.
[self.textField addTarget:self action:@selector(textFieldTextChanged:) forControlEvents:UIControlEventEditingChanged];
UITextField
cũng tuyên bố một giao thức UITextFieldDelegate
với các phương pháp mà bạn có thể thực hiện trong lớp học của bạn để được thông báo về những thay đổi đến một instance của UITextField
. Tôi khuyên bạn nên trở nên thoải mái với phái đoàn vì nó là một mô hình phổ biến trong khuôn khổ Cocoa.
Kiểm tra câu trả lời cho how to get selected text from uitextfield in iphone?
này link có một giải pháp mà không phiền với apis tin:
Nói tóm lại: Subclass UITextField, thực hiện
-(BOOL)canPerformAction:(SEL)action withSender:(id)sender
và kiểm tra nếu phạm vi lựa chọn đã thay đổi. Nhưng điều này không thông báo về vòi.
Vì vậy, những gì tôi đã làm là sau khi subclassing, quan sát selectedTextRange
tài sản:
-(void)awakeFromNib {
[self addObserver:self forKeyPath:@"selectedTextRange" options:0 context:nil];
}
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
[self notifyDelegateIfNecessary];
}
trình rất tốt trong iOS8.
lý do tại sao bạn không ghi đè lên [UITextField setSelectedTextRange: (UITextRange *) selectedTextRange] nếu bạn đã làm lớp con UITextField? Sau đó, tất cả các thay đổi sẽ xuất hiện ở nơi này. – Leo
@Leo 1. Tôi không muốn thay đổi hành vi, chỉ nhận được thông báo 2. Tôi vừa kiểm tra PlayGround và tôi nghĩ bạn không thể ghi đè chức năng đó. – Krisdigital
Nó hoạt động cho tôi (IOS 8 + 9). Bằng cách này tôi bao quanh các nhu cầu để loại bỏ các quan sát viên ở nơi thích hợp. – Leo
Có cách đơn giản để phát hiện lựa chọn trong TextField
add đối tượng quan sát viên bất động sản trong viewDidAppear
[self.keyboardInputFieldPassword addObserver:self forKeyPath:@"selectedTextRange" options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld context:nil];
Sau đó Thêm quan sát chức năng cho bất động sản
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
if([keyPath isEqualToString:@"selectedTextRange"] && self.keyboardInputFieldPassword == object)
[self textFieldDidChangeSelection:self.keyboardInputFieldPassword];
}
này sẽ nắm bắt được nhiều lựa chọn trong UITextField
Để theo dõi c onvention, bạn nên removeObserver trong viewDidDisappear
[self.keyboardInputFieldPassword removeObserver:self forKeyPath:@"selectedTextRange" context:nil];
- 1. Cách nhận thông báo khi thông báo được thông báo
- 2. Nhận thông báo khi DTE.ActiveDocument thay đổi
- 3. - thay đổi thông báo
- 4. Cách tốt nhất để xử lý thông báo lỗi
- 5. Thông báo cảnh báo Javascript Thay thế
- 6. được thông báo khi UITextField trở thànhFirstResponder
- 7. Cách thay thế tốt nhất để chờ ... thông báo cho đồng bộ hóa ở mức độ thấp là gì?
- 8. Cách lưu trữ thông báo người dùng tốt nhất?
- 9. Cách tốt nhất để hiển thị thông báo với jQuery
- 10. Mã thông báo API là gì
- 11. Cách tốt nhất để quản lý Thông báo địa phương mà ứng dụng của bạn đã lên lịch là gì?
- 12. Cách tốt nhất để hiển thị thông báo lỗi/cảnh báo trên ứng dụng trang web là gì?
- 13. Thay đổi thông báo tạm dừng
- 14. thông báo thay đổi couchdb-python
- 15. Nhận thông báo về thay đổi trang trong UIWebView
- 16. Thông báo thay đổi chiều cao bàn phím iPad
- 17. Rails 3.1 Tìm hiểu cách thay đổi thông báo Flash CSS Từ thông báo thành công?
- 18. Thay đổi Bố cục Thông báo
- 19. Thực tiễn tốt nhất để hiển thị thông báo lỗi
- 20. Mã thông báo có nghĩa là gì?
- 21. Cách chèn mã thông báo màu xanh bên trong UITextField?
- 22. Thông báo trong UIWebView rằng lựa chọn văn bản đã bắt đầu hoặc kết thúc?
- 23. Nhận thông báo cho các tài liệu đã thay đổi trong mongodb
- 24. g ++ hoặc gcc tùy chọn để nhận thông báo cảnh báo với id cảnh báo
- 25. Nhận thông báo khi Giá trị Khóa đã được thay đổi
- 26. Xác thực thông báo là gì?
- 27. Cách nhận thông báo khi Trạng thái SMS thay đổi từ 'Đã xếp hàng' thành 'Đã gửi'?
- 28. Có cách nào để nhận thông báo khi thuộc tính UIImageView.image của tôi thay đổi không?
- 29. Cách thông báo hoạt động đã được khu vực thông báo bao trả?
- 30. Cách đăng và nhận thông báo?
[ 'UIControlEventEditingChanged'] (http://developer.apple.com/library/ios/documentation/uikit/reference/UIControl_Class/Reference/Reference.html#//apple_ref/doc/c_ref/UIControlEventEditingChanged) chỉ đề cập đến chỉnh sửa văn bản. Tức là, hành động chỉ kích hoạt khi văn bản thay đổi trong trường văn bản 'isEditing'. Điều này không bao gồm các thay đổi lựa chọn. – ma11hew28