Selectie in UITextView voorkomen discussie in Ontwikkelen voor iOS forum; ( verdwijnt na registratie ) Hey Ik heb een UITextView en kan al een property zetten dat de inhoud daarvan niet kan gewijzigd worden. Mensen kunnen dus gewoon de inhoud ...
|
Registreer | FAQ | Ledenlijst | Kalender | Zoeken | Berichten van vandaag | Markeer forums als gelezen |
#1
|
||||
|
||||
Selectie in UITextView voorkomen
Hey
Ik heb een UITextView en kan al een property zetten dat de inhoud daarvan niet kan gewijzigd worden. Mensen kunnen dus gewoon de inhoud lezen. Nu kan men deze inhoud wel nog kopiëren door even op te tappen en dan select all te kiezen en dan kopiëren... Is er een manier om te voorkomen dat de inhoud van een UITextView gekopieerd wordt? Bedankt Laatst gewijzigd door SkyTrix; 17-08-09 om 16:07. |
|
|
Gesponsorde links (verdwijnt na registratie)
|
#2
|
||||
|
||||
ik vond wel een stukje code die het klembord leeggooid als je de app verlaat. Dus het nooit kan kopieren in een andere functie:
Code:
- (void)applicationWillTerminate:(UIApplication *)application { NSLog(@"application terminating"); // Clear pasteboard to prevent pasting into other applications: UIPasteboard *pasteBoard = [UIPasteboard generalPasteboard]; pasteBoard.items = nil; }
__________________
Het grootste voetbalforum van Nederland |
#3
|
||||
|
||||
Das zeker al bruikbaar, bedankt. Zou nog beter zijn moest ik iets hebben die maakt dat je zelfs niet kan selecteren.. Ben zelf ook nog niks tegengekomen tot nu toe.
|
#4
|
||||
|
||||
Ik ben even aan het zoek geweest voor je, maar voorlopig is dit het beste wat ik kon vinden.
Ik las wel iets over dat je met UIResponder iets kan doen, maar het is me nog niet duidelijk wat dat is om te voorkomen dat je kan kopieren. |
#5
|
||||
|
||||
Bedankt, ik zoek nog even verder.
|
#6
|
||||
|
||||
Code:
"The UIResponder class declares the method canPerformAction:withSender:. Responder classes can implement this method to show and remove commands of the editing menu based on the current context." "The menu initially includes all commands for which the first responder has corresponding UIResponderStandardEditActions method implementations (copy:, paste:, and so on). Before the menu is displayed, however, the system sends a canPerformAction:withSender: message to the first responder, which in many cases is the custom view itself. In its implementation of this method, the responder evaluates whether the command (indicated by the selector in the first argument) is applicable in the current context. For example, if the selector is paste: and there is no data in the pasteboard of a type the view can handle, the responder should return NO to suppress the Paste command. If the first responder does not implement the canPerformAction:withSender: method, or does not handle the given command, the message travels up the responder chain. Listing 3-5 shows an implementation of the canPerformAction:withSender: method that looks for message matching the copy:, copy:, and paste: selectors; it enables or disables the Copy, Cut, and Paste menu commands based on the current selection context and, for paste, the contents of the pasteboard." - (BOOL)canPerformAction:(SEL)action withSender:(id)sender { BOOL retValue = NO; ColorTile *theTile = [self colorTileForOrigin:currentSelection]; if (action == @selector(paste:) ) retValue = (theTile == nil) && [[UIPasteboard generalPasteboard] containsPasteboardTypes: [NSArray arrayWithObject:ColorTileUTI]]; else if ( action == @selector(cut:) || action == @selector(copy:) ) retValue = (theTile != nil); else retValue = [super canPerformAction:action withSender:sender]; return retValue; } From the ADC Reference Library Here (http://developer.apple.com/iphone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/EventHandling/EventHandling.html#//apple_ref/doc/uid/TP40007072-CH9-SW34) So basically, just return NO for the selectors cut: copy: and paste: in this method in the first responder or parent in the responder chain. |
#7
|
||||
|
||||
Ik zou dus een custom UITextView moeten maken met die method en voor iedere selector NO returnen?
|
#8
|
||||
|
||||
Dat is wat ik er zo ongeveer van begreep, maar heb het niet zelf geprobeerd.
|
#9
|
||||
|
||||
Heeft niet geholpen :/ UITextView gesubclassed met die method, zelfs voor elke action NO gereturned. Blijft gewoon kopiëren..
|
#10
|
||||
|
||||
hmm.. dan heb ik helaas ook geen oplossing voor je..
|
#11
|
||||
|
||||
Jammer, maar super bedankt voor al je moeite!
|
#12
|
|||
|
|||
hij blijft kopieren omdat de copy events door de hele responder chain gaan. subviews van UITextView krijgen die events nog binnen. indien mogelijk zou je die ook moeten subclassen. "Note that if your class returns NO for a command, another responder further up the responder chain may still return YES, enabling the command."
__________________
Software Engineer iPhone Developer |
#13
|
||||
|
||||
Citaat:
|
#14
|
|||
|
|||
een standaard UITextview heeft volgens mij al subviews: Timberline: /Users/ericasadun/Headers/merged/UIKit/UITextView.h Source File
als dan een van die objecten zegt dat zijn text gekopieerd kan worden, dan doet ie dat gewoon. |
#15
|
||||
|
||||
Hoe kan ik daar dan rond..? :s
|
#16
|
|||
|
|||
ik weet het niet zeker, maar ik denk dat dit een mogelijke oplossing is:
iPhone Custom Class / Object in Responder Chain - Stack Overflow een category maken op de views die canPerformAction implementeren, en dan daar uitschakelen ofzo. |
Er zijn 1 actieve gebruikers die momenteel deze discussie bekijken (0 leden en 1 gasten) |
|
Discussietools | |
Weergave | |
Soortgelijke discussies |
||||
Discussie | Auteur | Forum | Reacties | Laatste bericht |
Adressen selectie synchroniseren | znerik | iTunes | 3 | 05-01-11 12:13 |
Muziek: Selectie mp3's in itunes bepaalt, niet instellingen iphone... | FScheltens | Muziek, foto & video | 0 | 10-03-10 00:11 |
Netwerk selectie Iphone 3G | Roxn | iPhone algemeen | 33 | 17-08-09 18:35 |
UITableViewCell subview kleur veranderen bij selectie | SkyTrix | Ontwikkelen voor iOS | 3 | 02-08-09 14:32 |
|
|